1.不同数据类型所占字节数。
bit 01二进制的比特位
byte 字节 =8 bit 比特
之后的单位都是以1024为倍数
#include<stdio.h>
#include<unistd.h>
int main()
{
printf("sizeof(char)=%d\n",sizeof(char));
printf("sizeof(short)=%d\n",sizeof(short));
printf("sizeof(int)=%d\n",sizeof(int));
printf("sizeof(long)=%d\n",sizeof(long));
printf("sizeof(long long)=%d\n",sizeof(long long));
printf("sizeof(float)=%d\n",sizeof(float));
printf("sizeof(double)=%d\n",sizeof(double));
return 0;
}
2.当局部变量和全局变量重名,局部变量优先
#include<stdio.h>
#include<unistd.h>
int a=100;
int main()
{
int a=10;
printf("a=%d\n",a);
return 0;
}
3.变量与常量,变量的生命周期
枚举默认从0开始,可以赋初值。
#include<stdio.h>
#include<unistd.h>
#define MAX 100//宏常量
enum Sex
{
MALE=5,//枚举默认从0开始,可以赋初值
FEMALE,
SECRET
};//枚举常量
struct Stu
{};
int a=100;
int main()
{
{
int a=10;
}
3.14;//字面常量
100;//字面常量
//const 修饰的常变量
const int ca = 10;
const char cc = 'W';
int num =10;
num =20;
//int arr[ca]={1,2,3};//C中无法使用
int b = MAX;
int arr[MAX]={0};
printf("num = %d\n",num);
printf("a=%d\n",a);
enum Sex s1=MALE;
enum Sex s2= FEMALE;
printf("MALE=%d\n",MALE);
printf("FEMALE=%d\n",FEMALE);
printf("SECRET=%d\n",SECRET);
return 0;
}
4.字符串,gcc好像默认会添加\0?
gcc好像存在一定优化,打印sizeof结果不同,打印strlen和内容时相同。
#include<stdio.h>
#include<unistd.h>
#include<string.h>
int main()
{
char arr[] = "abcdef";//字符数组,默认隐含\0
char arr1[] = {'a','b','c'};//不包含\0 gcc存在优化,对于strlen和打印内容时结果相同,打印sizeof时结果不同
char arr2[] = "abc";//包含\0
printf("sizeof(arr1)=%d\n",sizeof(arr1));
printf("sizeof(arr2)=%d\n",sizeof(arr2));
printf("strlen(arr1)=%d\n",strlen(arr1));
printf("strlen(arr2)=%d\n",strlen(arr2));
printf("%s\n",arr1);
printf("%s\n",arr2);
return 0;
}
5.转义字符 以\开头,出现不想要的转义字符时需要在前面多加一个\
转义的使用有两个方面,一个是转为字面意思,一个是去除转义
#include<stdio.h>
#include<string.h>
#include<string.h>
int main()
{
printf("%s\n","c:\test\55\test.c");
printf("%s\n","c:\\test\\55\\test.c");
printf("(are you ok??)\n");
printf("%c\n",'\'');
printf("%s\n","\"");
printf("\a\a\a\a\a\a\a\a\a");
return 0;
}
ascll码与转义字符
\ddd 一到三个八进制找到10进制ascll码并对应为字符,\xdd一到两个十六进制,转化为对应的十进制ascll码并对应为字符。
#include<stdio.h>
#include<unistd.h>
#include<string.h>
int main()
{
printf("%c\n",'\55');
printf("%c\n",'\x35');
return 0;
}