#include
int main()
{
/* 定义变量, 初始化, 再次赋值 */
int a;
a = 1;
printf("%d\n", a);
a = 2;
printf("%d\n", a);
a = 3;
printf("%d\n", a);
/* 定义变量并初始化 */
int b = 123;
printf("%d\n", b);
/* 连续定义多个变量 */
int c, d, e, f = 456, g = 789;
printf("%d\n", f);
printf("%d\n", g);
return 0;
}
%u 表示按unsigned int格式输入或输出数据
%hd用来输出 short int 类型,hd 是 short decimal 的简写;
%d用来输出 int 类型,d 是 decimal 的简写;
%ld用来输出 long int 类型,ld 是 long decimal 的简写。
字节数: 2 ≤ short ≤ int ≤ long
#include
int main()
{
/*
short === short int
至少占2个字节(2Byte == 16Bit)
Bit只有两种状态: 0或1
*/
short a = 0;
/*
int大于等于short
*/
int b = 0;
/*
long 大于等于int
*/
long c = 0;
/*
short, int, long的长度关系:2 ≤ short ≤ int ≤ long
short 并不一定真的”短“,long 也并不一定真的”长“,它们有可能和 int 占用相同的字节数。
short至少占2个字节.
short 的长度不能大于 int,long 的长度不能小于 int。
*/
unsigned int d = 54321;
short e = 12345;
printf("%u and %hd\n", d, e);
return 0;
}
sizeof 变量名
sizeof(数据类型)
sizeof 用来获取某个数据类型或变量所占用的字节数
#include
int main()
{
/* 二进制: 以0b或0B开头, 只含0和1 */
int a = 0b1;
int b = 0b10;
int c = 0B11;
int d = 0B0100;
printf("二进制\n");
printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);
/* 八进制: 以数字0开头, 只含0到7 */
a = 01;
b = 010;
c = 0100;
d = 001000;
printf("八进制\n");
printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);
/* 十六进制: 以0x或0X开头, 只含0到9再到f或0到F */
a = 0xf;
b = 0xf0;
c = 0XF00;
d = 0X0F000;
printf("十六进制\n");
printf("a = %d, b = %d, c = %d, d = %d\n", a, b, c, d);
/* 进制的输出 */
short e = 0b10;
int f = 010;
long g = 0x10;
printf("e=%ho\n", e);
printf("f=%o\n", f);
printf("g=%lx\n", g);
printf("g=%#lx\n", g); // ***
return 0;
}
常用整型有short、int、long三种类型,对应的输出格式如下表:
#include
int main()
{
int i = -1;
printf("i = %d\n", i);
// 无符号输出
printf("i = %u\n", i); //符号位在第一位,负是1,正是0
unsigned int j = -1;
printf("j = %d\n", j);
printf("j = %u\n", j); //符号位在第一位,负是1,正是0
return 0;
}
加法和减法也可以合并为一种运算,就是加法运算,因为减去一个数相当于加上这个数的相反数.(5 - 3等价于 5 + (-3),10 - (-9)等价于10+9.)
有符号数在存储和读取时都要进行转化
正数的原码(整数的二进制形式)、反码、补码都是一样的
负数的反码是原码取反,负数的补码是负数的反码加一
内存中的计算方式:补码相加,结果的原码是具体数值。
计算机内存数值存储方式是补码。
#include
int main(int argc, char **argv)
{
// 字符
char a = 'a';
putchar(a);
putchar('\n');
printf("%c %d\n", a, a);
// 字符串
char str1[] = "I'm a string1. ";
char *str2 = "I'm a string2. ";
puts(str1);
printf("%s\n", str2);
return 0;
}