您的位置:首页 > 编程语言 > C语言/C++

C语言中类型转换时的截取规则及补码表示的计算方法

2012-11-04 00:13 302 查看
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<math.h>

using namespace std;
/*
看CSAPP书时,看的头晕,直接写个程序验证一下,看起来直观多了。
*/
void typeConvert()
{
int a = 128;
char c = a;
printf("%d\n", c);// (-1)*2^8 = -128
a = 130;
c = a;
printf("%d\n", c);// (-1)*2^8 + 2 = -126

a = (int)pow(2, 30) + (int)pow(2, 16) + 2;
short b = a;
printf("%d\n", b);// b = 2

a = (int)pow(2, 30) + (int)pow(2, 15) + 2;
b = a;
printf("%d\n", b);// b = -32766  b = (-1)*2^15 + 1*2^1 = -32766
//printf("%d\n", a);// a = 32770    2^15 = 32768

unsigned short int d = a;
printf("%d\n", d); // d = 32770
a = (int)pow(2, 30) + (int)pow(2, 16) + 2;
d = a;
printf("%d\n", d); // d = 2

b = -2;
a = (int)b;
printf("%d\n", a);//a = -2
printf("%c\n", (char)a);// ?
printf("%c\n", -4);// ?  char类型值小于0时 输出为?

unsigned int ua = b;
printf("%d\n", ua);  // ua = -2
ua = (unsigned int)b;
printf("%d\n", ua);//ua = -2
}

void test_ctrlZ()//ctrl+z结束输入流
{
int a;
while(cin >> a)
cout << a << " ";
}

int main()
{
//typeConvert();
test_ctrlZ();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐