繁体   English   中英

为什么在此程序中printf(i)给出0作为输出?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM