首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于c中类型转换的有关问题,求解

2012-04-13 
关于c中类型转换的问题,求解#include stdio.hmain(){short int i -1unsigned long int g iprintf(

关于c中类型转换的问题,求解

#include <stdio.h>
main()
{
  short int i = -1;
  unsigned long int g = i;
  printf("%d %d\n",i,g);

}
为甚麽输出结果为 -1 -1
进行赋值时不是右边的转换为左边的类型吗?
难道机器进行符号位扩充时,只是依据补码的扩充法则,补上了1,而c定义变量中的unsigned 没有起作用?

[解决办法]

printf("%d %u\n",i,g);
[解决办法]
这是因为short int转换为long int,即小的变为大的,所以是-1,-1,反过来就不是了,你试试看
[解决办法]

C/C++ code
unsigned long int g = i;
[解决办法]
表達太差勁,簡單的再說
就是%D把沒符號轉成有符號...
剛剛好,正是-1
[解决办法]
google 整数提升, 带符号位扩展

printf("%d %u\n",i,g);

热点排行