在一站式C编程中发现一个题
1、以下程序段编译能通过,执行也不出错,但是执行结果不正确(根据第 3 节 “程序的调试”的定义,这是一个语义错误),请分析一下哪里错了。还有,既然错了为什么编译能通过呢?
int x = -1;
if (x > 0);
printf("x is positive.\n");
我觉得是分号的问题;但是没搞清楚他问的问题什么意思
关于LinuxC编程
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 7
- 注册时间: 2012-08-15 11:05
-
- 帖子: 1038
- 注册时间: 2007-01-10 9:32
- susbarbatus
- 帖子: 2966
- 注册时间: 2010-04-10 16:14
- 系统: Arch Linux
Re: 关于LinuxC编程
问题就是为什么能编译能通过,执行也不出错,但是执行结果不正确啊。
所谓语义错误也就是说,语法上这个程序是对的,但表达的并非是程序员想要的意思。
这个问题就是让你解释两点:
1. 语法为什么没错
2. 这段代码实际上执行了什么样的逻辑
所谓语义错误也就是说,语法上这个程序是对的,但表达的并非是程序员想要的意思。
这个问题就是让你解释两点:
1. 语法为什么没错
2. 这段代码实际上执行了什么样的逻辑
沉迷将棋中……
-
- 帖子: 1038
- 注册时间: 2007-01-10 9:32
Re: 关于LinuxC编程
-
- 帖子: 13
- 注册时间: 2013-06-02 15:44
- 系统: ubuntu12.04 lst
Re: 关于LinuxC编程
int x = -1;
if (x > 0);
printf("x is positive.\n");
其中第一行未定义一个整型的变量。
第二行是条件判断语句,但是if判断完后为空处理。因为有分号的原因。
第三行为打印语句,恒输出"x is positive.”
我估计原意是判断后再根据判断结果打印。
应为
if (x > 0)
printf("x is positive.\n");
if (x > 0);
printf("x is positive.\n");
其中第一行未定义一个整型的变量。
第二行是条件判断语句,但是if判断完后为空处理。因为有分号的原因。
第三行为打印语句,恒输出"x is positive.”
我估计原意是判断后再根据判断结果打印。
应为
if (x > 0)
printf("x is positive.\n");