为什么int x = 01234给出x为668的外高值
Why int x = 01234 gives outpiut value of x as 668?
我最近在我测试x的各种值的代码时遇到了以下内容。
我将尝试仅说明问题。
#include <iostream>
int main()
{
int x = 01234;
std:: cout << x ;
return 0;
}
输出:
x = 1234,1234
时 x = 01234 , 668
x = 001234 , 668
x = 240 , 240
x = 0240 , 160
x = 00240 , 160
对于以0开头的任何数字,我都会得到不同的值。例如:x = 0562给出370等。
我尝试使用各种在线C 编译器,但都提供相同的输出。我试图搜索这个问题,但找不到适当的答案。
看来您被八分之一的字面击中!以0
开头的任何数字都在基础8中解释。
01234 = 1 × 8^3 + 2 × 8^2 + 3 × 8^1 + 4 × 8^0
= 1 × 512 + 2 × 64 + 3 × 8 + 4 × 1
= 512 + 128 + 24 + 4
= 668
0240 = 2 × 8^2 + 4 × 8^1 + 0 × 8^0
= 2 × 64 + 4 × 8 + 0 × 1
= 128 + 32
= 160
数字01234
在八进制(基本8(时,当您预先预留A 0时,您将数字定义为八十位。当您以小数为单位打印时,您会得到十进制等效的
相关文章:
- C++程序在循环后给出奇怪的int值
- GetWindowRect 未正确给出左值和顶部值
- 我想反转我的阵列.为什么这段代码给出垃圾值?
- 为什么未初始化的内存位置的值给出 -842150451 的值?
- 尝试从动态分配的二维数组 C++ 中读取值时出现分段错误,并在尝试删除它时给出 munmap_chunk():
- C++:实现一个全局常量,其值由用户给出
- 从文件中读取数组没有给出正确的值?
- 阶乘使用循环递增给出垃圾值
- C++:通过函数参数传递的值给出不同的结果
- 为什么 SFINAE 没有给出增加布尔值的正确结果?
- 我的"if"语句中只有一个给出了准确的值,即使它们都是相同的结构
- std::chrono 在从 main 或 from 类方法使用时给出不同的值
- find() 没有返回可以使用的 int 值,并且在编译之前给出错误
- 视觉C++转换和写入值为 10 的无符号 int 给出 5 个字节
- C ++中的错误输出,i = 65530,当我们打印i的值时,它给出-6状态65530
- 当键不存在时,映射给出的值
- std ::向量距离函数如何给出比.size()更高的值
- 为什么int x = 01234给出x为668的外高值
- 欧拉#8项目,我不知道为什么我的代码给出了荒谬的高值
- SFINAE 尝试使用布尔值给出编译器错误:"模板参数'T::value'涉及模板参数"