变量:给变量命名的规则
数据类型:每个变量坑的大小
#include <stdio.h>
int main()
{
int a;
char b;
float c;
double d;
a = 520;
b ='H';
c = 3.14;
d = 3.141592653;
printf("我爱你用数字表示是%d\n",a);
printf("I love %cCY!\n",b); //%c表示引用字符型
printf("圆周率是%.2f\n",c);//%.2f表示精确到小数点后两位的浮点数
printf("精确一点的圆周率是%11.9f\n",d);//%11.9表示该数据总占宽度是11.小数点后有9位
return 0;
}
整型常量:整数 520
实型常量:有小数的数 3.14
字符常量:普通字符”H“和转义字符\n \b
字符串常量:”HCY“
符号常量:使用前必须定义。
定义符号常量:#define 标识符 常量
#define YEAR ”2023“
#include <stdio.h>
#define NAME "MARS CONCERT"
#define YEAR 2023
#define MOOD "开心" /*宏定义习惯上用大写定义*/
int main()
{
printf("%s在%d的心情是%s\n",NAME,YEAR,MOOD);
return 0;
}
编译器读取字符串时会在后面加上一个\0表示终止。因此一个字符串的长度要加上1
字符长度:short int<int <long int<long long int
sizeof(类型)可以知道这个类型的长度
#include <stdio.h>
int main()
{
int i;
char j;
float k;
i = 123;
j = 'c';
k = 3.14;
printf("size of int is %d\n",sizeof(int));
printf("size of i is %d\n",sizeof(i));
printf("size of char is %d\n",sizeof(char));
printf("size of j is %d\n",sizeof(j));
printf("size of float is %d\n",sizeof(float));
printf("size of k is %d\n",sizeof(k));
}
signed 带符号位 ,可存放负数unsigned 不带符号位,只能放0和正数
用来限定char或int的取值范围
默认类型是signed
#include <stdio.h>
int main()
{
short i;
unsigned short j;
i = 1;
j = -1;
printf("%d\n",i);
printf("%d\n",j);
}
结果是 1 65535
为什么是65535?
cpu能读懂的最小单位:bit
内存机构的最小寻址单位:byte
1 byte == 8 bit
short 是4个byte 也就是4*8=32,32个1是2的32次方-1=65535
pow函数为计算某个数有多少次方。
#include <stdio.h>
int main()
{
int result = pow(2,32)-1;
printf("result = %d\n",result);
return 0;
}
结果是2147483647
实际上2的32次方-1=4294967295
原因是默认类型为signed,符号位为0,只有31个1.
定义为 unsigned,并将%d 换成%u
#include <stdio.h>
int main()
{
unsigned int result = pow(2,32)-1;
printf("result = %u\n",result);
return 0;
}
计算机是如何存放负数的?