注:本文中涉及的程序忽略了引用头文件代码,如需运行请加代码#include <stdio.h>
?整型:int、short、long、long long
?浮点型:float、double
字符型:char
int main()
{
printf("Size of char: %zu bytes\n", sizeof(char));
printf("Size of int: %zu bytes\n", sizeof(int));
printf("Size of short: %zu bytes\n", sizeof(short));
printf("Size of long: %zu bytes\n", sizeof(long));
printf("Size of long long: %zu bytes\n", sizeof(long long));
printf("Size of float: %zu bytes\n", sizeof(float));
printf("Size of double: %zu bytes\n", sizeof(double));
printf("Size of pointer: %zu bytes\n", sizeof(void*));//指针
//打印各种数据结构类型占用字节(byte) 1 byte = 8 bit 1 kb = 1024 bytes
// c语言中没有字符串类型
return 0;
}
输出结果
Size of char: 1 bytes
Size of int: 4 bytes ? ? ?
Size of short: 2 bytes ? ?
Size of long: 4 bytes ? ??
Size of long long: 8 bytes
Size of float: 4 bytes
Size of double: 8 bytes
Size of pointer: 8 bytes
一个字节(Byte)通常由8个二进制位(Bit)组成,每个位只能是0或1。
字节是计算机存储和处理数据的基本单位,它可以存储一个ASCII字符、一个整数、一个浮点数等数据。
位(Bit)是计算机存储和处理数据的最小单位,它只能是0或1。
1 Byte = 8 Bits
1 KB = 1024 Bytes
1 MB = 1024 KB
1 GB = 1024 MB
// int a = 10;//全局变量
// int main()
// {
// int b = 20;//局部变量
// int a = 100;
// printf("%d\n",a); //局部变量与全局变量冲突时,优先使用局部变量(就近原则)
// return 0;
// }
// 不建议将全局和局部变量写成一样
输出结果为a = 100
int main()
{
int a = 0;//变量初始化,否则为生成的随机数
int b = 0;
scanf("%d %d",&a,&b);//输入两个数,放入a与b的地址中
int sum_num = a + b;
printf("result is %d",sum_num);
return 0;
}
tip:使用变量时建议对变量进行初始化操作,即赋值为0
?1、字面常量 ?30、3.14、'a'字符、 'abc'字符串
?2、const修饰的常变量
?int a = 10;(a可以改变)
?const int a = 10;(a不可改变,本质是变量,但不能被修改,有常量的属性)
?3、define定义的标识符常量
?4、枚举常量
#define MAX 100//define定义的标识符常量
#define ST "ABCDEFG"
int main()
{
printf("%d\n",MAX);
int a = MAX;
printf("%d\n",a);
printf("%s\n",ST);//%d 整形 %s 字符串
return 0;
}
输出结果:
100
100 ? ?
ABCDEFG
enum Color
{
RED,//默认枚举常量第一个赋值为0
GREN,//1
BLUE//2
//也可以赋值RED = 1,则顺延, GREN = 2,BLUE = 3
};
int main()
{
printf("RED=%d\n",RED);
printf("GREN=%d\n",GREN);
printf("BLUE=%d\n",BLUE);
return 0;
}
输出结果
RED=0
GREN=1
BLUE=2
转义字符必须以反斜杠 \
开始。如果要表示反斜杠字符本身,需要使用 \\
转义字符占用一个字节
\?? | 防止出现3字母词 |
\’ | 用于表示字符’ |
\“? | 用于表示字符“ |
\\?? | 用于表示斜杠,一个斜杠时会被解释为转义序列 |
\a | 警告字符,电脑会发出蜂鸣 |
\b | 退格符,相当于删除一个字符 |
\n? | 换行符 |
\r | 回车符 |
\t | 水平制表符,与tab效果相当 |
\v | 垂直制表符,与换行类似 |
\ddd | 表示1~3个八进制数,如\130 |
\xdd | 表示1~2个十六进制数,如\x1a |
int main()
{
char arr1[] = "abcdef";//字符串内存 a b c d e f \0打印结束标志
char arr2[] = {'a','b','c','d','e','f'}; //字符内存 a b c d f 没有\0结束标志
int len1 = strlen(arr1);//字符串长度函数
int len2 = strlen(arr2);
printf("%d\n",len1);
printf("%d\n",len2);//没有结束标志导致strlen函数直到找到\0位结束,因此结果不确定
return 0;
}
输出结果:
6
12(随机,不一定为12)
int main()
{
printf("%c",'\'');//打印'这个字符,加\转义
return 0;
}
/* ?*/? ? 嵌套注释会出现问题
//? 可多行可单行