标题:[求助] 还是有点糊涂
只看楼主
cutboy
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-16
 问题点数:0 回复次数:8 
[求助] 还是有点糊涂

main()
{
unsined i=10,s;
int a=-24;
s=i+a;
printf("%d\n",i+a);

getch();
}
这个程序运行结果是多少呢?是-14还是一个很大的正数呢?

搜索更多相关主题的帖子: 糊涂 
2007-09-16 12:43
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
得分:0 
都不是。因为这个程序不能运行!

偶学编程,也许本身就是一个错。。。
2007-09-16 12:45
偑色幻想
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2007-9-12
得分:0 

unsigned.拼写错误.


2007-09-16 12:52
cutboy
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-16
得分:0 

main()
{
unsigned i=10;
int a=-24;
printf("%d\n",i+a);

getch();
}

能运行啊.是-14,但要是换成这样
main()
{
unsined b=10;
int a=-24,c;
(a+b>6)?(c=1):(c=0);
printf("%d\n",c);

getch();
}
结果就是1,可是这个时候为什么A+B就那么大呢?而上面却是-14.怎么回事


2007-09-16 13:10
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
得分:0 

#include<stdio.h>

int main()
{
unsigned i=10,s;
int a=-24;
s=i+a;
printf("%d\n",i+a);

getchar();
return 0;
}

这样后结果14``


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2007-09-16 13:25
wsaaa
Rank: 1
等 级:新手上路
帖 子:136
专家分:0
注 册:2007-5-8
得分:0 
是-14,年自己可以运行一下,再说一下,unsined应该是unsigned.
2007-09-16 15:50
muse
Rank: 1
等 级:新手上路
帖 子:115
专家分:0
注 册:2007-9-13
得分:0 

答案是-14的原因在于你在printf("%d",i+a);中用了%d,s所以你的结果还是有符号的整型数据。


2007-09-16 16:34
vbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:352
专家分:147
注 册:2006-12-30
得分:0 
我想是这样的,printf("%d\n",i+a);输出-14是因为%d的原因,如果你用%u无符号输出就是4294967282;这正是
(a+b>6)?(c=1):(c=0);
printf("%d\n",c);的输出结果是1的原因,因为在进行运算a+b时是将一般的整型换成无符号型进行计算的.

清远鹏程万里人才网:[url=http://www.]http://www.[/url]zq.,qy.
2007-09-16 16:43
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
得分:0 
i+a这个表达式求解过程中发生了隐式转换,int型的变量a自动转换成了unsigned int型,变量a变成了一个非常大的正整数,用printf("%d\n",i+a)输出就是-14,用printf("%u\n",i+a)输出就是一个非常大的正整数。。。

英者自知,雄者自胜
2007-09-16 16:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-170340-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.079298 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved