由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Linux版 - 这个算是Ubuntu 9.04里GCC 4.3.3的bug么?
相关主题
个人机装哪个版本啊?早说了CentOS就是渣
GCC在哪里用?howto install vboxguestadditions on CentOS.
centos 能用fodera的源吗?FreeBSD Port
听说CentOS不行了谁推荐一个distri吧,
是时候放弃debian/ubuntu投奔freebsd了Using openSUSE 11.2 now. :)
大家推荐个linux吧,老电脑gentoo 和 arch linux有何异同?
很弱的发行版本问题服务器用啥 distro 好?
我该用什么server OS 呢?请问哪个版本的linux最好玩?
相关话题的讨论汇总
话题: gcc话题: ubuntu话题: int话题: true话题: include
进入Linux版参与讨论
1 (共1页)
u*********t
发帖数: 95
1
这个c程序在Ubuntu 9.04里编译能过,但是出来的结果很奇特
#include
#include
int main(){
int a;
bool b;
a = (b == true);
printf("a = %d\n",a);
return 0;
}
用Ubuntu 9.04 里的gcc 4.3.3 编译后,执行的结果竟然是 a = 184,
用FreeBSD里的gcc 4.2.1编译的结果就是对的,a要么是0,要么是1
用Debian4里的gcc 4.1.2和CentOS里的gcc 3.4.6也都是对的,莫非这是
gcc 4.3.3的新特性,强迫大家必须初始化变量?
a*****i
发帖数: 4391
2

http://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167

【在 u*********t 的大作中提到】
: 这个c程序在Ubuntu 9.04里编译能过,但是出来的结果很奇特
: #include
: #include
: int main(){
: int a;
: bool b;
: a = (b == true);
: printf("a = %d\n",a);
: return 0;
: }

c******n
发帖数: 4965
3
I think "true" value in C is never promised to be a specific one, it's just
non-zero.

【在 u*********t 的大作中提到】
: 这个c程序在Ubuntu 9.04里编译能过,但是出来的结果很奇特
: #include
: #include
: int main(){
: int a;
: bool b;
: a = (b == true);
: printf("a = %d\n",a);
: return 0;
: }

m*****n
发帖数: 266
4
正解。
u*********t
发帖数: 95
5
好吧,我把代码改了一下:
#include
#include
int main(){
int a;
int c;
bool b;
a = (b == true);
c = (b != true);
printf("a = %d, c = %d\n",a,c);
return 0;
}
结果a = 184, c = 185, 莫非 "true" = 184, "false" = 185, 或者反过来?
而不是用0表示 "false" ?
E*V
发帖数: 17544
6
这个是问题,gentoo下是对的。gcc。4。3。4

【在 u*********t 的大作中提到】
: 好吧,我把代码改了一下:
: #include
: #include
: int main(){
: int a;
: int c;
: bool b;
: a = (b == true);
: c = (b != true);
: printf("a = %d, c = %d\n",a,c);

N****w
发帖数: 21578
7
生成汇编代码是什么样的看一眼就知道了

【在 u*********t 的大作中提到】
: 好吧,我把代码改了一下:
: #include
: #include
: int main(){
: int a;
: int c;
: bool b;
: a = (b == true);
: c = (b != true);
: printf("a = %d, c = %d\n",a,c);

Z**0
发帖数: 1119
8
这个问题主要是因为b,没有初始化造成的,没有初始化就使用。我在一个机器上出现你说的结果,一个机器上出现“正确的”的结果。

【在 u*********t 的大作中提到】
: 好吧,我把代码改了一下:
: #include
: #include
: int main(){
: int a;
: int c;
: bool b;
: a = (b == true);
: c = (b != true);
: printf("a = %d, c = %d\n",a,c);

1 (共1页)
进入Linux版参与讨论
相关主题
请问哪个版本的linux最好玩?是时候放弃debian/ubuntu投奔freebsd了
再次证明CentOS是一坨屎大家推荐个linux吧,老电脑
发现好多人还不明白FreeBSD到底好在哪很弱的发行版本问题
这个狠我该用什么server OS 呢?
个人机装哪个版本啊?早说了CentOS就是渣
GCC在哪里用?howto install vboxguestadditions on CentOS.
centos 能用fodera的源吗?FreeBSD Port
听说CentOS不行了谁推荐一个distri吧,
相关话题的讨论汇总
话题: gcc话题: ubuntu话题: int话题: true话题: include