【发布时间】:2017-12-03 12:56:27
【问题描述】:
我昨天完成了 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 条件是什么意思?
【问题讨论】:
-
这是一道可怕的考试题,顺便说一句。但还有什么是新的。
-
@David Ameixa 该语句具有未定义的行为。
-
我敢打赌 UB 不是可能的答案之一;)
-
考试的“正确”答案是什么?
-
您能否告诉我们提供此类考试的机构名称,以便我们促进禁止它教授编程?\