1、操作符--单目操作符,只有一个数的操作符。
! 逻辑反操作,C语言中0就是假,非0为真。
sizeof 计算操作数的类型长度,以字节为单位,()里可以是变量名,或者变量类型。
int a=10;
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(int));
~ 对一个数的二进制按位取反,01010101--->10101010
++ 前置++,先++,后使用;后置++,先使用,后++
先a=a+1,再把b=a;
先把b=a,再a=a+1;
--同++的使用;
() 强制类型转换,将后面的数强制转换类型
int a=(int )3.14;
条件(三目)操作符 :exp1?exp2:exp3-----表达式1为真,则执行表达式2,若为假,则执行表达式3。
, 逗号表达式,从左向右依次计算,整个表达式的结果是最后一个表达式的结果,每个算式都有效,且值已经改变。
int a=1;
int b=2;
int c=3;
int d=(a=a+b,c=c+a,b=b-2);
[ ]下标引用操作符
int arr1[]={1,2,3,4,5};
printf("%d\n",arr[4]);
( )函数调用操作符。
2、常见关键字
auto 自动变量,通常省略,例主函数中定义一个变量,定义了自动创建,出了函数自动销毁。
auto int a=10;
break--跳出循环,常在switch for while dowhile语句
case char short int long float double signed (有符号的) unsigned (无符号的)
enum struct union(联合体)自定义类型
extern 声明外部符号 register--寄存器
goto 语句 return --返回,使用在函数中。 sizeof stcstic typedef--类型重定义 void--无,空
volatile ; 关键字不可用于变量名,有特殊意义。
(1)、typedef 类型重定义,使用格式如下
typedef unsigned int uint;
int main()
{
uint num2=0;
unsigned int num1=0;
return 0;
}\\num1与num2定义方式不同,但类型相同。
(2)、register 寄存器关键字 寄存器是计算机中的一种存储器,是集成到CPU上的,可以较快读取数据。 int mun=10;存储在内存中,若需要频繁调用,改到寄存器中,建议定义为register int num=10; 起建议作用,建议将num的值放在寄存器中,最终是由编译器决定的。寄存器变量,不能取地址,因为取地址只有在内存上才有地址,寄存器是集成在CPU上的。
(3)、stastic-----静态的
修饰局部变量-称为静态局部变量,使函数内部创建的局部变量一直存在,每次调用函数时,使用的是上一次的值。内存可分为栈区,堆区,静态区。局部变量,函数的形式参数(临时的变量)都存在栈区中;动态内存分配,malloc,calloc等分布在堆区;静态区放静态变量、全局变量。
stastic 修饰局部变量的时候,改变了局部变量的存储类型:本来一个局部变量是存储在栈区的,被stastic修饰的局部变量是存储在静态区的。存储在静态区的变量出了它的作用域变量也不销毁,生命周期较长。stastic修饰的局部变量的生命周期和程序的生命周期一样。作用域不变,不可以在其对应的函数外部使用
修饰全局变量---改变了全局变量的外部属性:本来一个全局变量是具有外部链接属性的(定义的全局变量可在另外的.c文件中使用,需要用extern 声明外部符号。),但被stastic修饰之后就变成了内部链接属性。这时stastic修饰的全局变量只能在本源文件(.c)中使用,其他文件无法再使用到。
修饰函数---和修饰全局变量是类似的,一个函数本来也是具有外部链接属性的(同样用extern来声明外部链接属性),但当被stastic修饰的时候,外部链接属性就变成了内部链接属性,这个函数就只能本源文件内部使用,其他文件不能再使用了。
vs使用小技巧,从工具-->选项--->常规(可修改主题颜色)、下滑到字体颜色,可自定义编辑框的颜色,字体。
3、#define定义常量和宏
//#define 定义常量
#define NUM 100
#define STR "hehe"
int main()
{
printf("%d\n",NUM);//被编译器处理后得到 printf("%d\n",100);
printf("%d\n",STR);//被编译器处理后得到 printf("%d\n","hehe");
return 0;
}
//#define 定义宏 宏是 有参数的
#define ADD(x,y)((x)+(y))
int main()
{
int a=10;
int b=20;
int sum=ADD(a,b);//int sum=(a+b);
printf("%d\n",sum);
return 0;
}