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; }
相关文章推荐
- 把传过来的Object对象转换成Collection类型的对象。isArray()方法,判定此Class对象是否表示一个数组类。java.lang.reflect.Array 对任意数组进行操作
- C语言的类型转换规则
- 14章类型信息-之类型转换前先做检查--之使用类字面常量--类名.class--以及动态instanceof(isInstance方法)----递归计数(计算各个类的个数)
- Java中基本数据类型的转换、原码和补码的表示及运算
- 基本数据类型的转换和表示方法
- C语言中两种方式表示时间日期值time_t和struct tm类型的相互转换
- 14章类型信息-之类型转换前先做检查--之使用类字面常量--类名.class--以及动态instanceof(isInstance方法)----递归计数(计算各个类的个数)
- c语言算术运算表达式与赋值运算表达式的类型转换规则
- (转)---C语言中两种方式表示时间日期值time_t和struct tm类型的相互转换
- c++算术运算和位运算中类型转换和类型提升规则和方法
- 14章类型信息-之类型转换前先做检查--之使用类字面常量--类名.class--以及动态instanceof(isInstance方法)----递归计数(计算各个类的个数)
- C语言超出类型数值范围的表示方法
- C语言隐式类型转换规则
- C语言基本数据类型及转换规则
- 对于c语言int类型和float,以及double类型表示范围的计算
- C语言隐式类型转换规则
- (转载)C语言中算术运算的隐式类型转换规则
- VC++和C语言中常见数据类型转换为字符串的方法
- C语言中不同数据类型间混合运算的转换规则
- C语言隐式类型转换的规则