[英]Why does printf(i) give 0 as output in this program?
#include <stdio.h>
int main()
{
int i=-1;
!i;
printf(i);
}
输出:
0
为什么输出为零 ?
在您的代码中
printf(i);
无效 ,因为printf()
期望将const char *
作为第一个参数,并且您要传递一个int
。 它调用未定义的行为 。
调出编译器警告。 启用基本警告级别后,您将获得一些提示
警告:传递'printf'的参数1会使指针从整数开始而无需强制转换
解决方案:我相信,您想要的是
printf("%d\n", i);
首先,它是如何编译的? 甚至你也有输出!
printf(i);
printf- int printf的格式(const char * format,...);
需要的第一个参数是const char*
并且您传递了一个int
。 这个说法不正确。 您会在编译器中使用启用的警告进行编译时看到。
正确的语法是-
printf("%d",i);
即使您更正了printf
语句,您也不会得到0
作为输出。
!i;
这应该写为-
i=!i;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.