#include <stdio.h>
int main()
{
int i=-1;
!i;
printf(i);
}
输出:
0
为什么输出为零?
答案 0 :(得分:4)
在您的代码中,
printf(i);
无效,因为printf()
期望const char *
作为第一个参数,而您传递的是int
。它调用undefined behaviour。
调高编译器警告。打开基本警告级别后,您应该在行
处获得一些消息警告:传递'printf'的参数1会使整数指针不带强制转换
解决方案:我相信,您想要的是
printf("%d\n", i);
答案 1 :(得分:2)
首先是如何编译的?即使你有输出!!
printf(i);
printf格式 - int printf(const char * format,...);
所需的第一个参数是const char*
,您传递的是int
。
这句话不正确。在编译器中使用已启用的警告进行编译时,您会看到。
正确的语法是 -
printf("%d",i);
即使您更正了printf
语句,也不会将0
作为输出。
!i;
这应该写成 -
i=!i;