十六进制:ffff fff9
对应二进制:1111 1111 1111 1111 1111 1111 1111 1001
反码(减一): 1111 1111 1111 1111 1111 1111 1111 1000
原码(取反): 1000 0000 0000 0000 0000 0000 0000 0111
补码可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理 。
#include<stdio.h>
void main() {
int x = -1;
printf("%p\n", &x);
printf("%d,%u", x,x);//d带符十进制,%u无符号
getchar();
}
切换无符号
4. 整型整型常量的三种表示形式:
十进制整型常量的表示与数学上的表示相同,十进制整型常量前没有前缀,由0~9的数字组成。
八进制整型常量的表示形式是以数字0开头,即以0作为八进制数的前缀,由0~7的数字组成。
十六进制整型常量的表示形式以0x或0X作为前缀,由数字0~9、字母A~F或a~f组成。
类型 | 存储空间大小 | 值范围 |
char | 1 字节 | -128 到 127 或 0 到 255 |
unsigned char | 1 字节 | 0 到 255 |
signed char | 1 字节 | -128 到 127 |
int | 2 或 4 字节 | -32,768 到 32,767 <br>-2,147,483,648 到 2,147,483,647 |
unsigned int | 2 或 4 字节 | 0 到 65,535 <br>0 到 4,294,967,295 |
short | 2 字节 | -32,768 到 32,767 |
unsigned short | 2 字节 | 0 到 65,535 |
long | 4 字节 | -2,147,483,648 到 2,147,483,647 |
unsigned long | 4 字节 | 0 到 4,294,967,295 |
#include<stdio.h>
void main() {
printf("你的编号:%d\n", 10);//十进制常量10
printf("一个负数:%d\n", -20);//十进制常量-20
printf("你的年纪%d\n", 044);//八进制的常量->36
printf("你有多少钱%d\n", -070);//八进制的常量->-56
printf("蜀国有%d多兵力\n", 0x7F);//八进制的常量->127
printf("蜀国有%d多兵力\n", -0x7F);//八进制的常量->-127
printf("这个长整数:%d\n", 10l);
printf("这个无符号长整数:%u", 12u);
unsigned int x = -20u;//这个会出错,加u后,不能带负号
getchar();
}