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

来源:互联网 发布:php图书管理系统实例 编辑:程序博客网 时间:2024/05/21 06:54
#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 = -128a = 130;c = a;printf("%d\n", c);// (-1)*2^8 + 2 = -126a = (int)pow(2, 30) + (int)pow(2, 16) + 2;short b = a;printf("%d\n", b);// b = 2a = (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 = 32768unsigned 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 = 2b = -2;a = (int)b;printf("%d\n", a);//a = -2printf("%c\n", (char)a);// ?printf("%c\n", -4);// ?  char类型值小于0时 输出为?unsigned int ua = b;printf("%d\n", ua);  // ua = -2ua = (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;}

原创粉丝点击