【C语言】八进制
八进制
先看题目:
答案 :A
以下是详细的解题步骤分析:
解题思路
1. 理解变量赋值:
- 代码语句:
char x = 040; - 在 C 语言中,以数字
0开头的数字表示八进制(Octal) 数。 - 我们需要先算出它的十进制值:
- 八进制
040= $4 \times 8^1 + 0 \times 8^0 = 32$(十进制)。
- 八进制
- 所以,变量
x此时存储的数值是十进制的 32 。
2. 执行位运算:
- 代码表达式:
x << 1 - 这是左移运算符(Left Shift) ,将二进制位向左移动 1 位。
- 在数学上,左移 1 位等同于乘以 2:
- $32 \times 2 = 64$(十进制)。
- 或者从二进制角度看:
- 32 的二进制是
0010 0000 - 左移一位变成
0100 0000(即十进制的 64)。
- 32 的二进制是
3. 格式化输出:
- 代码语句:
printf("%o\n", ...) - 格式控制符
%o表示以八进制 形式输出整数。 - 现在的运算结果是十进制的 64 ,我们需要将其转换回八进制:
- $64 \div 8 = 8$ … 余数 0
- $8 \div 8 = 1$ … 余数 0
- $1 \div 8 = 0$ … 余数 1
- 从下往上取余数,结果为 100 。
因此,程序的输出结果是 100 。
这道题考察了三个核心知识点:八进制常量的表示(前缀0)、位移运算的含义、以及 printf 的格式化输出。如果你对这几个概念还有疑问,可以随时问我。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 王总的博客!




