一、常量
? 什么是常量:程序运行期间数值不能变化的叫常量
?100 默认int
100u unsigned int
100lu unsigned long
100llu unsigned long long
100l long
100ll long long
3.14 默认double
3.14f float
3.14l long double
二、格式化输入输出
?%nd?显示n个字符宽度,不够则补空格,右对齐
?%-nd?显示n个字符宽度,不够则补空格,左对齐
?%0nd?显示n个字符宽度,不够则补0,右对齐
?%n.mf?显示n个字符宽度(小数点算一位),不够则补空格,m表示小数点后的位数(四舍五入)
?%g?不显示小数点后多余的0
三、运算符
自变运算符 ++/–
使变量的值自动+1或者-1
?前自变: ++num --num 立即生效
?后自变: num++ num-- 下一行语句生效
?注意:不要在一行内多次使用自变运算符
算数运算符 + - / %
?整数/整数 结果没有小数点
?/ % 除数不能为0?出现错误:浮点数例外(核心已转储)
关系运算符> < >= <= == !=
?比较结果必须是0或者1,比较结果还能继续参与运算
例: ?int num=-5 ?if(1 < num < 10) ?永远为真,运算规则与数学不一样
?建议常量放左边
逻辑运算符&& || !
?会先把运算对象转换成逻辑值,0转换为假,非0转换为真
A && B 一假即假
A || B 一真即真
!A 求反
??&& || 具有短路特性:当左边的运算对象已经能够确定整个表达式的结果时,右边的所有运算对象不再计算
三目运算符
运算对象有三个部分
?A ? B : C ?判断A的值是否为真,如果为真执行B,否则执行C ??该语句不能使用流程控制语句,因为它必须要有运算结果
赋值运算符 = += -=
?a += b; a = a+b; ?a -= b; a = a-b; ?a *= b; a = a*b; ?a /= b; a = a/b; ?…
位运算符 & | ~ >> <<
sizeof 也是运算符,但是sizeof括号内的表达式不会计算,只会计算表达式中字节最大的值
四、类型转换
自动类型转换
?只有相同类型的数据才能运算,不同类型的数据必须转换成相同的类型才能进行计算
?转换规则:(以不丢失数据为基础,适当地牺牲一些空间) ??1、字节少的向字节多的转 ??2、有符号的向无符号的转 ??3、整型向浮点型转
强制类型转换
?
五、分支语句
if(表达式)
{
达式为真时,执行此处代码
}
if(表达式)
{
表达式为真时,执行此处代码
}
else
{
表达式为假时,执行此处代码
}
if(表达式1)
{
表达式1为真时,执行此处代码
}
else if(表达式2)
{
表达式2为真时,执行此处代码
}
else
{
表达式都为假时,最后执行此处代码
}
注意: ?大括号建议上下对齐 ?当分支语句只有一条时,大括号可以省略,但不建议省略
六、开关语句
switch(n)
{
case val:
...
break;
case val:
...
break;
default:
...
}
注意: ?如果每个case后都有break,就形成了分支结构 ?switch不能与continue配合使用
注意: ?case a … b: 可以表示一个范围a~b,但是属于GNU编译器独有的语法,不建议使用
七、循环语句
?循环就是让一段代码反复执行,达到想要的效果
for循环语句
?for是一种比较灵活且比较危险(与其他循环相比)的一种循环
??一般用一个变量来引导for循环的运行,这个变量叫做循环变量 i index
for([1];[2];[3])
{
[4];
}
?1、给循环变量赋初值,C99标准才可以在此处定义循环变量
?2、判断循环条件,一般判断循环变量是否到达边界
??4、如果2为真,则执行此处代码,也叫循环体
??3、改变循环变量,防止出现死循环,一般对循环变量自加或自减
for循环的多种写法:
for(;;)
{
}
int i=0
for(;i<10;i++)
{
}
for(int i=0;i<10;)
{
...
i++;
}
while循环
while(条件)
{
}
while循环相当于for循环的精简版本 for(;条件;)
for循环负责解决明确知道循环次数的问题
while循环负责解决只知道结束条件,而不确定循环次数的问题
do while循环
do{
}while(条件);
先执行循环体,才判断循环条件是否为真,该循环至少执行一次
适合先干活,在检查的特殊情况,例如:输入判断密码
循环嵌套
?循环语句中包含循环语句
?外层循环执行一次,内层循环执行n次
|