单选题
9.以下程序的输出结果为()。 main() {int i=010,j=10; printf(”%d,%d\n”,++i,j--); }
A
11,10
B
9,10
C
010,9
D
10,9
答案解析
正确答案:B
解析:
这道题主要考察 C 语言中**八进制常量的表示**以及**自增/自减运算符**的使用规则。以下是详细解析:
### 1. 变量初始化分析
* `int i = 010;`
* 在 C 语言中,以数字 `0` 开头的整数常量表示**八进制**数。
* 八进制数 `010` 转换为十进制的计算过程为:$1 \times 8^1 + 0 \times 8^0 = 8$。
* 因此,变量 `i` 的初始值为 **8**。
* `int j = 10;`
* 这是一个普通的十进制整数。
* 因此,变量 `j` 的初始值为 **10**。
### 2. 表达式分析 `printf("%d,%d\n", ++i, j--);`
`printf` 函数中的参数涉及两个运算:`++i` 和 `j--`。
* **`++i`(前置自增)**:
* 规则是“先加后用”。即先将 `i` 的值加 1,然后使用增加后的值参与运算。
* 计算:`i` 从 8 变为 9。
* 传递给 `printf` 的第一个 `%d` 的值为 **9**。
* **`j--`(后置自减)**:
* 规则是“先用后减”。即先使用 `j` 当前的值参与运算,然后再将 `j` 的值减 1。
* 计算:传递给 `printf` 的第二个 `%d` 的值为 `j` 原来的值,即 **10**。
* 副作用:在该表达式求值完成后,`j` 的值会变为 9(但这不影响本次输出的结果)。
### 3. 输出结果
* 第一个 `%d` 输出 `++i` 的结果:**9**
* 第二个 `%d` 输出 `j--` 的结果:**10**
* 中间由逗号分隔。
因此,最终输出结果为:`9,10`
### 4. 选项对比
* A. 11,10 (错误,误以为 i 是十进制 10 且前置自增)
* **B. 9,10 (正确)**
* C. 010,9 (错误,格式符 %d 输出十进制,且逻辑错误)
* D. 10,9 (错误,混淆了前置/后置运算符或八进制转换)
故正确答案为 **B**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};, 则数组x在内存中所占字节数是()。
单选题
1、下列字符序列中,不可用作C语言标识符的是()。
单选题
1、若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是()。
单选题
1、已知字母a的ASCII十进制代码为97,则执行下列语句后的输出结果为()。char a='a'; a--; printf(”%d,%c\n”,a+'2'-'0',a+'3'-'0');
单选题
1、对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是()。
单选题
1、若有说明:int a[10];则对a数组元素的正确引用是()。
单选题
1、以下数据中,不正确的数值或字符常量是()。
单选题
9.以下数组定义中不正确的是()。
单选题
8.设有 int x=11; 则表达式 (x++ * 1/3) 的值是()。
单选题
3.以下数据中,不正确的数值或字符常量是()。
