首页 新闻 会员 周边 捐助

请指点和分析错误

0
悬赏园豆:20 [已解决问题] 解决于 2013-09-12 13:51

《Linux C编程一站式学习》里的一道错误思考题,现在找不到错误根本原因

#include <stdio.h>
int main(void)
{
    int x = -1;
    if (x > 0);
    printf("is positive\n");
    return 0;
}

以上程序能编译过,执行也正常,但执行结果不正确,里面含语议错误,请分析下那里错了。还有,即然错了为什么能编译过呢?

这下面是我改过后的代码:

#include <stdio.h>
int main(void)

{
    int x;
    x == -1;
    if(x > 0)
    printf("is positive\n");
    return 0;
}

但是不管我x == -1或是x == 1,编译后执行的结果都是一样的,为什么?

紫方竹的主页 紫方竹 | 初学一级 | 园豆:161
提问于:2013-09-11 00:32
< >
分享
最佳答案
0

==是判断,单=号才是赋值。

收获园豆:15
幻天芒 | 高人七级 |园豆:37207 | 2013-09-11 00:34

我是新手,在看书,能解释详细点吗,==是判断,单=号才是赋值这我能理解。

紫方竹 | 园豆:161 (初学一级) | 2013-09-11 00:36

@星-Ian: 有啥疑惑?

幻天芒 | 园豆:37207 (高人七级) | 2013-09-11 00:45
#include <stdio.h>
int main(void)
{
    int x = -1;
    if (x > 0);//这个分号表示if语句结束了,所以下面的printf始终会输出!
    printf("is positive\n");
    return 0;
}

 

@幻天芒: 

幻天芒 | 园豆:37207 (高人七级) | 2013-09-11 01:04

@幻天芒: 这个能理解,下面这个问题呢,没赋值,也是会打印,这是解错题,我想知道根本原因。

紫方竹 | 园豆:161 (初学一级) | 2013-09-12 01:09

@星-Ian: 曾记否,C中,int默认值不是0,而是一个随机整数~

幻天芒 | 园豆:37207 (高人七级) | 2013-09-12 10:04
其他回答(4)
0

你应该找本大学教材《C语言设计》学习下基本语法。

收获园豆:5
Launcher | 园豆:45050 (高人七级) | 2013-09-11 09:14

正在学习中,参考了几本教材,《Linux C编程一站式学习》目前对我来说是最适合的。

另上面两个问题是解错题,我要知题错误的根本原因,这样我才能学的更深。

支持(0) 反对(0) 紫方竹 | 园豆:161 (初学一级) | 2013-09-12 01:10

@星-Ian: 根本原因就是语法就是这么规定的。如果你要追究为什么语法要这么规定,建议你学习《编译原理》后去看下 C 的语法定义文档。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2013-09-12 09:51
0

两个==是判断比较,一个=号才是赋值

skywood | 园豆:164 (初学一级) | 2013-09-11 09:34
0

x==-1 ;这条语句是判断x是否等于-1,并没有对x的进行赋值,x的值不变。并且你没有对x赋值,x的值时不确定的

薛遗山 | 园豆:106 (初学一级) | 2013-09-11 14:09
0

首先源代码无论如何运行显示什么,最后返回值 都是0,至于你的代码请看楼上们的评论

恶魔店长无我 | 园豆:200 (初学一级) | 2013-09-11 17:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册