【发布时间】:2020-12-17 23:23:36
【问题描述】:
我想知道下面的程序是如何工作的?
#include <stdio.h>
int main(void) {
while(1){
if(printf("%d",printf("%c")))
break;
else
continue;
}
return 0;
}
我不知道 printf("%c") 部分是如何工作的,因此也不知道整个程序。我知道编写类似 printf("%c", 'a'); 的东西。像那样,但是如果不提供要打印的字符,它是如何工作的?我的问题是以下程序打印什么以及它是如何打印的?
我尝试运行该程序,有时它什么也不打印,但有时它打印一些随机字符,后跟 1。我无法了解它是如何工作的,有人可以解释一下代码背后的原因吗?它是如何打印随机字符的,为什么最后有一个?
这是我得到的一些输出
【问题讨论】:
-
您正在调用未定义的行为:它只是似乎工作,但它已经坏了。
-
内部
printf调用缺少参数:printf("%c")%c格式需要一个整数参数,它被打印为一个字符。例如,printf("%c", 'x')将是有效的。你的编译器应该给你一个警告(如果没有,考虑提高警告级别)。 -
节省时间 - 启用更多警告以快速检测
printf("%c")是问题代码。
标签: c if-statement output printf