我在书中遇到了一个问题,它要求我写下以下程序的输出。
#include<stdio.h>
int main()
{
int j=4;
( !j != 1 ? printf("\nWelcome") : printf("GooD Bye"));
return 0;
}
我基本上无法理解在运行程序时如何打印Welcome。任何人都可以在运算符层次结构的帮助下解释,编译器根据表达式计算出什么值?
答案 0 :(得分:7)
该行
( !j != 1 ? printf("\nWelcome") : printf("GooD Bye"));
相当于
if(!j != 1)
printf("\nWelcome);
else
printf("Good Bye");
此处!j
评估为0
,因此条件!j != 1
将始终为真,并且会打印Welcome
。
答案 1 :(得分:1)
是的,混淆了c !!
确定c!j的计算结果为0,因为它是一个非0的数字所以0!= 1是真的,因为三元运算的真实部分被执行了,并且#34; welcome&#34;打印出来。
所以要重估:
!4 = 0 //或任何数字
!0 = 1