C语言while循环中不能用true

lymboy 2017-07-29 11:59:14
我在学习gdb命令行调试时遇到了这个情况 (我的操作环境是ubuntu17.04)
(以下代码故意设计了逻辑错误)

#include <stdio.h>
int main(void)
{
int sum = 0, i = 0;
char input[5];

while (true) //while(1)可以,true不行
{
scanf("%s", input);
for (i = 0; input[i] != '\0'; i++)
{
sum = sum*10 + input[i] - '0';
}
printf("input=%d\n", sum);
}

return 0;
}


报错:

test2.c: In function ‘main’:
test2.c:7:9: error: ‘true’ undeclared (first use in this function)
while (true)
^~~~
test2.c:7:9: note: each undeclared identifier is reported only once for each function it appears in

Exited: 256



为什么会有这个错误呢?
...全文
3471 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
战在春秋 2017-07-30
  • 打赏
  • 举报
回复
引用
为什么会有这个错误呢
和C++不一样,C语言并没有布尔类型,在C语言中认为 0为假,非0为真, 所以条件表达式的写法非常灵活。 例如:
char a = 'Y';
if(a) //合法

int i = 3;
int *j = &i;
if(j) //合法
0为假,非0为真,在各种C语言考试中这几乎也是一个必考的知识点。 另外,如果你查一下文档,会发现C语言并没有true这个关键字,而C++有。 C关键字:https://msdn.microsoft.com/zh-cn/library/befeaky0.aspx C++关键字:https://msdn.microsoft.com/zh-cn/library/2e6a4at9.aspx
sdghchj 2017-07-30
  • 打赏
  • 举报
回复
严格地说,c标准里没有true和false,需用1和0代替。

70,038

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧