我昨天用 C 语言完成了编程考试。有一个问题我无法回答,即使我今天研究了我也想不出一个解决方案。
所以我们有这个:
int A= -1 , B= -2, C= -3, X=1;
X = B != C ? A=(~C) - A-- : ++C + (~A);
printf("A= %d B= %d C =%d X=%d \n", A,B,C,X);
我知道如果 X = B != C
为真,则此运算符起作用,然后执行 A=(~C) - A--
。如果为假,则执行 ++C + (~A)
。
谁能告诉我并解释一下 printf
中 A、B、C 和 X 的值是多少?
新
这包含在要求对整个程序进行“跟踪”的问题中:
#include <stdio.h>
void main(){
int A= -1 , B= -2, C= -3, X=1;
X = B != C ? A=(~C) - A-- : ++C + (~A);
printf("A= %d B= %d C =%d X=%d \n", A,B,C,X);
if(~A){
printf("\n out1\n");
C= A | B
printf("A= %d B= %d C =%d X=%d \n", A,B,C,X);
C= C <<1;}
if(A^B){
printf("\n out2\n");
C= B & A
B += 2
X= X>>1
printf("A= %d B= %d C =%d X=%d \n", A,B,C,X);
顺便说一下,谁能告诉我那些 if
条件是什么意思?
最佳答案
声明
X = B != C ? A=(~C) - A-- : ++C + (~A);
相当于
if(B != C)
X = (A = (~C) - (A--));
else
X = ++C + (~A);
因此,表达式 A = (~C) - (A--)
调用未定义的行为。在这种情况下,没有什么好期待的。
也就是说,这是一个错误的问题,不应该在考试中提出。或者,只要一个选项声明代码将调用未定义的行为,就可以用多项选择答案来询问它。
关于条件运算符 "? : ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44831643/