用下列语句定义a,b,c,然后执行b=a、c='b'+b,则b,c的值是(). long a=0xffffff; int b; char c; A:0ffffff 和0x61 B:-1和98 C:-1和97 D:指向同一地址
时间: 2024-04-27 11:24:31 浏览: 83
根据题意,执行 `b=a` 后,`b` 的值为 `0xffffff`,因为 `long` 类型的 `a` 的值为 `0xffffff`,也就是二进制的 `11111111 11111111 11111111`。
执行 `c='b'+b` 时,需要注意 `'b'` 的 ASCII 码值为 `98`,而 `b` 的值为 `0xffffff`,将它们相加得到 `98+0xffffff=1000001`,根据 ASCII 码表可知 `1000001` 对应的字符是 `'A'`,因此 `c` 的值为 `'A'`。
所以,选项为 C:`-1` 和 `97`。
相关问题
15、下列程序执行后的输出结果是:( ) #define MA(x) x*(x-1) main() { int a = 1, b = 2; printf("%d \n", MA(1 + a + b)); } A. 6 B. 8 C. 10 D. 12
C. 10。解释如下:根据宏定义,MA(1 + a + b) 将被替换为 (1 + a + b) * (1 + a + b - 1),即 (1 + a + b) * (a + b)。因此,printf 语句将被替换为 printf("%d \n", (1 + a + b) * (a + b))。当 a = 1,b = 2 时,(1 + a + b) * (a + b) = 10,因此输出结果为 10。因此,答案为 C。
12) 假设 a是 int 类型变量,并初始化为 1,则下列哪个为合法的条件语句? A. if (a) { } B. if (a<<3) { } C. if (a=2) { } D. if (true) { }
A. if (a) { } 是合法的条件语句。在C语言中,if语句中的条件表达式会被自动转换为布尔值,其规则是:0被转换为false,其他数字被转换为true。因此,如果a的值为1,则其被转换为true,if语句中的代码块会被执行。
B. if (a<<3) { } 不是合法的条件语句。a<<3是将a的值左移三位,得到的结果为8,但是在if语句中,条件表达式必须是布尔值类型的,8不是布尔值类型,因此会出现语法错误。
C. if (a=2) { } 是合法的条件语句,但是可能会产生错误的结果。这是因为a=2是将a的值赋值为2,并且赋值语句的返回值为被赋的值,因此if语句中的条件表达式为2,2被转换为true,if语句中的代码块会被执行。但是,如果a的原始值为0,则if语句中的条件表达式为false,代码块不会被执行,因为a=2这个赋值语句会返回2,将a的值修改为了2。
D. if (true) { } 是合法的条件语句。在C语言中,true被定义为1,因此if语句中的条件表达式为true,将被转换为布尔值true,if语句中的代码块会被执行。
阅读全文