ASCII码
NULL--0
'0'--48
'A'--65
'a'--97
P. 大小转换'f'-'F'
#include <stido.h>
int main (void)
{
int a = 'f';
printf("%c\n",a-32);
return 0;
}
标识符的命名规则
1、只能由字母、数字、下划线组成
2、只能用字母、下划线开头
3、不能与关键字重复
宏定义
#define 变量名(一般是大写,不是一定要大写)表达式
P. 计算出一年有多少秒
#include <stido.h>
#define YEAR_SECOND (365*24*60*60)
int main(void)
{
printf("%d\n",YEAR_SECOND);
return 0;
}
变量
从变量的作用域可分为:全局变量、局部变量
全局变量:定义在函数模块外部,作用域直到代码结束,如果没有赋初值,会自动为0
局部变量:定义在函数模块内部,作用于存在在花括里,如果没有赋初值,会是随机值
#include <stdio.h>
int a=10; //全局变量
int b=a; //错误 赋值语句需要有函数执行,函数体外只能进行初始化,不能进行赋值运算
int c;
c=20; //正确 C语言执行过程中对代码进行了优化,将int c; c=20; 优化成一句话int c=20;
int main(void)
{
int n=20; //局部变量
printf("%d\n",a);
printf("%d\n",c);
return 0;
}
从变量的存在时间(生存周期)可分为:静态存储、动态存储
静态存储:程序在运行期间分配固定的存储方式
动态存储:程序在运行期间根据需要动态的分配存储空间
定义:<存储类型><数据类型> 变量名;
存储类型:static、extern、register、auto
static:1、修饰全局变量、限制作用域
2、修饰函数、限制作用域
3、修饰局部变量、延长生命周期
extern:外部文件的调用,只能修饰全局变量
register:计算速率快,数量少
auto:函数中的局部变量,如果不专门声明为static存储,则都是动态分配存储空间。数据存储在动态存储区内。调用函数时系统自动分配空间,在函数结束时释放该空间。这些局部变量被称为自动变量。自动变量用auto关键字声明。(声明时auto可以省略)
显示转换(强制转换)
(数据类型) 变量名
#include <stido.h>
int main(void)
{
float a=1.24;
printf("%d\n",(int)a);
return 0;
}
运算符
按操作对象来分:一目运算符、二目运算符、三目运算符
按功能来分:算术运算符、逻辑运算符、赋值运算符、比较运算符、位运算符、逗号运算符、取地址、取内容、求字节
1)算数运算符
+、-、*、/、%、++、--
++: 分为前++、后++,两者单独存在时都是自加1。和其他表达式一起时,前++先自加1,再赋值。后++先赋值,再自加1。
--: 与++同理。
P. 交换两个变量的值(算术运算)
#include <stdio.h>
int main(void)
{
int a=7;
int b=3;
a=a+b;
b=a-b;
a=a-b;
printf("a=%d----b=%d\n",a,b);
return 0;
}
2)逻辑运算符
真:非0
假:0
! -- 非
&& -- 逻辑与:(表达式1)&&(表达式2)
|| -- 逻辑或:(表达式1)||(表达式2)ps: 如果表达式1为真,表达式2就不用执行,直接执行下面的代码
备选拼写:iso646.h头文件
&& -- and
|| -- or
! -- not
3)赋值运算符
=、+=、-=、/=
a+=b; //a=a+b;
4)比较运算符
<、>、==、!=、>=、<=
5)位运算符
& -- 位与
| -- 位或
~ -- 取反
^ -- 异或
P. 交换两个变量的值(位运算)
#include <stido.h>
int main(void)
{
int a=7;
int b=3;
a=a^b;
b=a^b;
a=a^b;
printf("a=%d----b=%d\n",a,b);
return 0;
}
左移 <<n -- 把最左边的n位移除,最右边添加n个0
右移<<n -- 无符号:把最右边的n位移除,最左边添n个0
有符号:把最右边的n位移除,最左边添n个与符号位相同的数
置1:
#include <stdio.h>
int main(void)
{
int a=7;
printf("%d\n",(a|((1<<3))));
return 0;
}
清0:
#include <stdio.h>
int main(void)
{
int a=7;
printf("%d\n",(a&(~(1<<2))));
return 0;
}
6)逗号运算符
int b=(3,8,10); //b=10;
7)取地址
&变量名
scanf("%d",&a);
scanf("%s",a); //a为数组
8)取内容
*地址 -- 取的是地址里的内容
9)求字节
sizeof(数据类型、数值、字符)