小氼儿 发表于 2014-3-26 14:36:11

[C语言]《零基础入门学习C语言》第五章考核第7题

#include <stdio.h>

main()
{
      int a = -7;
      while( a-- );
                ;
      printf("%d", a);
}


为什么答案是-1呢?a--不是做减法吗,-7会越减越小,怎么会减到-1呢

万千不待 发表于 2014-3-26 14:36:12

#include<stdio.h>
int main()
{
        char a;
        int c;

        a=-7;
        while(a--)
        {
                c=(int)a;
                printf("%d",c);
                printf("\n");
        }
        printf("%c",a);
        printf("\n");
}
运行这个程序你看的可能更加清楚一点,这里我用了char型而不是int型,但这两个原理都是一样的,你可以看一下屏幕上显示的数字,然后你就会明白了。char型的下线是-127,超出这个数字时又会变成+127,在while循环中它会变成零而退出循环,因为是a--先用后减,它会继续变成-1.

Simanzen 发表于 2014-3-27 00:34:46

万千不待 发表于 2014-3-26 19:51 static/image/common/back.gif
#include
int main()
{


你忘记加“return 0”了喔

Simanzen 发表于 2014-3-27 00:41:51

本帖最后由 Simanzen 于 2014-3-27 00:46 编辑

二楼正解。不信的话可以试一下下面的程序#include <stdio.h>

int main()
{
      char a = -7;
      while( a-- && int(a)!=126)
                ;
      printf("%d", int(a));
      return 0;
}



小氼儿 发表于 2014-3-27 08:20:18

万千不待 发表于 2014-3-26 14:36 static/image/common/back.gif
#include
int main()
{


谢谢你,我懂了,难怪-7的时候比7用的时间要长,讲的非常详细,我表示真心的感谢~:big

小氼儿 发表于 2014-3-27 08:21:12

Simanzen 发表于 2014-3-27 00:41 static/image/common/back.gif
二楼正解。不信的话可以试一下下面的程序#include

int main()


我信了,也运行了你的程序,非常谢谢啊,这倒题我弄懂了~

自己是谁 发表于 2019-2-26 22:57:41

你好,零基础学C的课后作业在哪里找

小氼儿 发表于 2019-5-24 23:19:44

自己是谁 发表于 2019-2-26 22:57
你好,零基础学C的课后作业在哪里找

https://fishc.com.cn/forum.php?mod=forumdisplay&fid=329&filter=typeid&typeid=570
页: [1]
查看完整版本: [C语言]《零基础入门学习C语言》第五章考核第7题