标题:赋值表达式类型转换问题
只看楼主
smileRan
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2011-4-4
结帖率:0
 问题点数:0 回复次数:7 
赋值表达式类型转换问题
#include<stdio.h>
main()
{
  short i=-1;
  printf("%d,%o,%x,%u\n",i,i,i,i);
}

编译出来是
-1,377777777777,ffffffff,4294967295

不理解,请高手指点!
搜索更多相关主题的帖子: ffffffff 表达式 
2011-08-06 10:45
Kevimine
Rank: 1
等 级:新手上路
帖 子:5
专家分:5
注 册:2011-8-3
得分:0 
短整型
2011-08-06 10:47
smileRan
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2011-4-4
得分:0 
回复 2楼 Kevimine
?能说得具体点么
2011-08-06 10:51
smallkid190
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:134
专家分:969
注 册:2011-4-23
得分:0 
%d是以带符号的十进制形式输出整数
%o是以八进制无符号形式输出整数
%x是以十六进制无符号形式输出整数
%u是以无符号的十进制形式输出整数

不懂就是不懂...
2011-08-06 11:29
大裤衩
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-7-1
得分:0 
这家伙明显是不按套路学....
2011-08-06 11:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
以下是引用大裤衩在2011-8-6 11:32:39的发言:

这家伙明显是不按套路学....


哈哈,你师傅是戚长发?

授人以渔,不授人以鱼。
2011-08-06 11:38
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:0 
#include<stdio.h>
main()
{
  short i=-1;//短整型站两个字节  也就是16位 1111 1111 1111 1111(FFFF)
  //要知道有符号的数据类型都是用它的补码来存储的  那么 16个1就是-1的补码
  short *p = &i;
  printf("%d,%o,%x,%u\n",i,i,i,i);
  //-1,37777777777,ffffffff,4294967295
  //第一个输出-1没有疑问吧  那是译码器把16个1翻译成了-1的补码 所以是-1
  //第二个8进制 他会这样翻译001 111 111 111 111 111 (177777因为16%3 = 1) 但是他还是输出
  //37777777777 那是因为编译器用了4个字节来表示了短整型 32%3 = 2 所以最高位是3
  //第三个  你只要吧第二个看明白了  第三个你就明白了
  //第四个那是4字节无符号整数的最大值 也就是2^32-1
}

                                         
===========深入<----------------->浅出============
2011-08-06 16:28
smileRan
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2011-4-4
得分:0 
回复 7楼 laoyang103
恩,谢谢
2011-08-07 13:41



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




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

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