这个程序的结果不一定是 55 5105 局部变量的初始值是随机的。
谢谢您的建议。不过我在脚注中已经说明了第一个结果也未必是正确的。我举这个例子就是为了说明了结果有时正确有时不正确,如果出现这种现象怎么办,首先应该怀疑有些局部变量的初始值是随机的。
老师我用(gdb)start试过不能出现书上的效果 出现这种情况 (gdb)start undefined command:"start".try "help". 是否有可能是因为GDB安装不完全··· 但是其他的命令都可以正常使用··
这我真不知道了。你的gdb是什么版本?
我也不清楚呢··· 不知道怎么看软件版本,我用的是网上下的 red hat9.0用虚拟机安装,当时选择了安装所有的软件。 不过我最近换了一个比较新的linux系统start 就可以用了,看来真是版本问题。
I met another case about failing to run "gdb-->start" in Virtualbox 2.10. It took me a whole night to sovle it. The result makes me annoyed. It's just a defect of this Virtualbox version. Update to Virtualbox 3.0, the problem can be fixed. I guess not many people have the same prolblem as I met. I'm always lucky to meet somethings beyond my mind now and then. The worst thing I don't wanna see is that when I've made a determination to do something well, I am put out of the door at the beginning because other things wrong, such as envrionment, configuration etc... I hope my C journey on this website will be soomth & interesting, and I will & must get to the end point of this journey. :_)
一个很小的错误,在书(2009.12月版)中第15页:
printf("character:\ninteger: %d\nfloating point: %f\n", ')',34,3.14);
联系下文,圆括号应为'}'。谢谢指出!您看得可真仔细,不仅挑出来这么小的一个错误,而且还追溯了源头,发现不是我弄错的而是出版社弄错的。等他们第二次印刷时我会提醒他们改的:)
int add_range(int low, int high)
{
int i, sum;
for (i = low; i <= high; i++)
sum = sum + i;
return sum;
}
这个局部变量是不要这样定义:
int i, sum = 0;您好,文中提到“由于局部变量i和sum没初始化,所以具有不确定的值”,i变量没有定义为static,且有i = low赋值操作,应该是被初始化的吧?
第一,赋值和初始化是两个不同的概念,第二,后面已经解释了“i的初值不是0倒没关系,在for循环中会赋值为0的,但sum如果初值不是0,累加得到的结果就错了。” 我觉得已经没有任何歧义了。
宋哥: 你好。 联系上下文, “(gdb) (直接回车)……” 这一小段18后面应该有一个“}”。
谢谢指出!你看得真仔细~
为什么说"i的初值不是0倒没关系,在for循环中会赋值为0的"? for中i不是被low赋值的吗?谢谢
谢谢指出!
@曾华阳 好象有的版本的GDB的确没有start。 我的GNU gdb 6.1.1 [FreeBSD]就没有。 不过可以先b main再r就可以了。 因为GDB手册上讲start的本意就是在第一个入口函数处设断点并run
至少有俩个错误: sum 没赋初始值 结果说的也不对……
我的是 Red hat 9.0的 里面的GBD 就没有start这个命令,不过楼上的说得很对,我试了一下,先b main再r,
在别处看到了三个缩写,不知道通用不: display→disp delete→d i locals→i lo
还有一个: watch→wa
没有采用gdb,感觉linux的开发工具还是挺多的 ,比如netbean等,不过这个程序的错误还是很好发现的,局部变量sum没有初始化赋值为0,所以结果会产生随机数
如果您有建设性意见,哪怕只是纠正一个错别字,也请不吝赐教,您留下的姓名和email将会出现在本书前言的致谢中。再次感谢您的宝贵意见!