首页 > 代码库 > 7.24 数据类型运算符 补码

7.24 数据类型运算符 补码

数据类型:
long           32位4个字节   64位8个字节    
                   vs2013 4个字节
long long  8个字节
float   4个字节
double 8个字节

%x和%p的区别:
int main()
{
 int num = 256;
 printf("%p\n",&num);  //0107FAFC
 printf("%#p\n", &num); //0X0107FAFC

 printf("%x\n", &num); //107fafc
 printf("%#x\n", &num); //0x107fafc
}

补码:
正数  原码 反码 补码 一样
负数   
     负数的原码               符号位是1   其他位正常   
     负数的原码转补码              除符号位取反 再加1  //  1000 0011 --> 11111101
     负数的补码转原码              除符号位取反 再加1

-5     原码1000 0101
        补码1111 1011
        原码1000 0101

截断:
  1. #include <stdio.h>
  2. int main()
  3. {
  4. int num = 5555;                    //十六进制0x15b3 小端存储 b3 15 -----内存
  5. unsigned char c = num; // b3 只留下低字节
  6. printf("%d\n", c);               //输出179
  7. }



unsigned 类型 与 int 相加出现的bug :
unsigned int a = 6;
a+ -10 > 0  //这句话是对的   因为-10是int  转为unsigned int      负数就会变成一个非常大的正数
                    //相加绝对大于0
  1. #include <stdio.h>
  2. int main()
  3. {
  4. unsigned int a = 6;
  5. if (a - 10 > 0) //结果会当成一个无符号整形来看待
  6. {
  7. printf("aaaaaaaaa\n");
  8. }
  9. }
结果会输出aaaaaaaaa



3.14 :   
3.14  默认是double型
要想变成float型 就要使用 3.14f


,(逗号)运算符 :
结果是最后一个值  int max = 5,6,10;   => max=10;


%求余运算符 :
负数可以求余,结果和被除数符号一致
但是浮点数不能求余


来自为知笔记(Wiz)


7.24 数据类型运算符 补码