总是在C中成真

kar*_*o25 -7 c boolean

这是我的简单程序

char *array = 1==1;
if((bool)array == true)
printf("true");

Output: true
Run Code Online (Sandbox Code Playgroud)

但是当我更改数组时

*array = 1==2;
Output: true
Run Code Online (Sandbox Code Playgroud)

我不知道为什么总是如此.我只想打印变量中的字符串array是否为truefalse.

Wil*_*ean 6

如果你这样做:

char *array = 1==2;
Run Code Online (Sandbox Code Playgroud)

那么(bool)array 肯定是假的,就像你期望的那样,因为你刚刚写了一个非常奇怪的方法,将指针'array'设置为null(零).

但是,如果相反,你这样做

char *array = 1==1;
*array = 1==2;
Run Code Online (Sandbox Code Playgroud)

然后,你所做的是初始化array为指向地址'1'的指针,然后将'false'(零)写入该地址.这几乎肯定会使您的程序在任何现代平台上崩溃,尽管在小型嵌入式平台上可能会发生其他事情(可能对您来说很意外).