这是我用C编写的简单程序
#include <stdio.h>
int main(void){
int i, j, k;
i = 2; j = 3;
k = i * j == 6;
printf("%d", k);
}
所以我知道这个程序实际上在做什么,变量的两个值在这里给出它进行计算然后检查; s计算出的值到给定条件。
现在这是我没有得到的当程序执行时,当给定条件满足时返回值1,如果不满足则返回0,并且我知道1代表真实而o代表虚假但是我在想什么怎么这样做我的意思是程序中没有任何东西告诉'它打印0或1的条件。在某些C编译器中是默认返回该值还是我错过了一些点。
答案 0 :(得分:3)
程序中没有任何内容告诉它打印0或1的条件。
是的,您打印k
并将比较结果分配给k。这些都是等效的(鉴于i = 2
和j = 3
):
k = i * j == 6;
k = (i * j == 6);
k = (6 == 6);
k = 1;
然后你打印它:
printf("%d", k); // Prints 1
答案 1 :(得分:1)
正如你自己所说,C中的逻辑表达式评估为0(假)或1(真)。这正是“告诉它”将0
或1
放入k
变量,具体取决于条件是否满足。
现在,您似乎在谈论您的计划“返回”的内容。我不确定你的“返回”是什么意思。程序退出代码也许?您的main
函数不包含任何return
语句,这意味着在C89 / 90中,其返回值将是不可预测的,而在C99中,它将保证返回0
。我怀疑您使用的是C89 / 90编译器,只是从main
返回“垃圾”,这纯粹意外地与k
的最终值匹配。
答案 2 :(得分:0)
在C中,没有真或假,只有1和0,或者更确切地说是0而不是0。