关键字
auto break case char const continue default do double else enum
extern float for goto if int long register return short signed
sizeof static struct switch typedef union unsigned void volatile while
常见关键字
sizeof
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
int main()
{
/********** 关键字 **********/
//sizeof 是一个关键字,用于计算类型或者变量的大小(单位:字节)
//sizeof 不是函数,后面的括号可以省略
int a = 10;
int arr[10] = { 0 };
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(a));
printf("%d\n", sizeof a); //变量a占用4个字节
printf("%d\n", sizeof arr); //数组总共占用字节
printf("%d\n", sizeof arr[0]); //数组单个元素所占字节
printf("%d\n", sizeof arr / sizeof arr[0]); //元素个数
return 0;
}
运行结果:
typedef类型重定义
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
typedef unsigned int u_int;
int main()
{
/********** 关键字 **********/
//auto是自动的,每个局部变量都是auto修饰的,被省略掉了
//在新的C语言语法中有其他用法,暂时不考虑
//register 寄存器关键字,寄存器比高速缓存更快,适用于大量频繁被使用的数据
//现在编译器发展迅速,该关键字用的很少
//define, include不是关键字,是预处理指令
//typedef类型重定义
unsigned int num = 100;
u_int num2 = 100;
printf("%d, %d", num, num2);
return 0;
}
static静态类型
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
void test()
{
static int a = 1;//改变局部变量的生命周期(本质上是改变了变量的存储类型)
a++;
printf("%d", a);
}
int main()
{
/********** 关键字 **********/
//static - 静态的
//1.修饰局部变量
//2.修饰全部变量,使得这个全局变量只能在自己所在的源文件(.c)内部可以使用,
// 此时全局变量的不具有外部链接属性,即使用extern也不能调用
//3.修饰函数,使得自己只能在自己所在的源文件内部使用,
// 即使在其他文件中声明此函数也不能在除了自己所在源文件中被使用
int i = 0;
while (i < 10) {
test();
i++;
}
return 0;
}
运行结果:
内存划分:
操作符
取反~
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<string.h>
int main()
{
/********** 操作符 **********/
int a = 0; //int 有符号位
printf("%d\n", ~a); //按二进制位取反(符号位也取反),整数在内存中存储的是补码,打印出来的是原码
//0x00 ~取反 -> 0xFF(计算机仍然认为是补码) -> 0xFE(反码) -> -1(原码)
return 0;
}
条件操作符(三目操作符)
/* 条件操作符(三目操作符) */
//exp1?exp2:exp3 //if exp1==true, exp2; else exp3
int a = 0;
int b = 2;
int max = a > b ? a : b;
printf("%d", max);
逗号表达式,从左向右计算,并且把最后一个表达式的结果作为整个表达式的结果
//逗号表达式,从左向右计算,并且把最后一个表达式的结果作为整个表达式的结果
int a = 1;
int b = 3;
int c = 5;
int d = (a = b + 2, c = a - 4, b = c + 2);
printf("a = %d, b = %d, c = %d, d = %d", a, b, c, d);