数据类型字节长度:
int:占4个字节,TC环境中是2个字节
short:占2个字节
long:占4个字节
long long:占8个字节
范围关系:short<=int<=long<long long
float:占4个字节
double:占8个字节
char:占1个字节
关键字:
关键字有32个,static,const,sizeof和数据类型都是关键字
内存以字节为单位,每个字节都有一个地址,1个字节是8位
大端字节序:
高字节存放在低地址,低字节存放在高地址
小端字节序:
高字节存放在高地址,低字节存放在低地址
char,int类型数值范围:
unsigned char:0~255
char:-128~127
unsigned int:0~2^32-1
int:-2^31~ 2^31-1
注:
strlen():求字符串长度,遇到’\0’结束
字符’\0’对应的数字(ASC码)是0
两种不同类型混合计算,先转换成表示范围较大的类型
const:只读变量,不能通过变量修改对应内存的值,但可以通过其他方式去修改`
#include<stdio.h>
int main()
{
const int c = 3;
int *ptr = (int *)&c;
*ptr = 100;
printf("%d\n",c);
return 0;
}
三目运算符(a>b)?a:b 是a,b两个值是否a>b如果大于输出a,否则输出b
逗号运算符:
一般形式:表达式1,表达式2
先表达式1,后表达式2,最后只输出表达式2
运算符优先级
运算符(优先级从高到低) | 结合律 |
---|---|
() | 从左往右 |
- + ++ – sizeof | 从右往左 |
* / % | 从左往右 |
+ - | 从左往右 |
< > <= >= | 从左往右 |
== != | 从左往右 |
= | 从右往左 |
a++ 等价于a=a+1 不等价于a+1,
执行a所在语句之后,a加1
++a 执行a所在语句之前,a加1
'\n’两个作用:1.换行 2.刷新缓冲区
%p输出的是地址
while语句:
每一次循环称为一次迭代
一般形式:
while( expression)
statement
注:在expression部分为假或0之前,重复执行statement部分
do while语句:
一般形式:
do
statement
while(expression)
此语句会先执行statement部分,再判断expression部分
注:当循环次数不确定时一般用while循环语句
for循环和逗号运算符
一般形式:
for(表达式1;表达式2;表达式3)
循环体
执行顺序:表达式1->表达式2->循环体->表达式3
#include<stdio.h>
int main()
{
int i;
for(i=0,printf("first\n");i<5,printf("second\n");i++printf("third\n
")
{
printf("%d\n",i);
if(5==i)break;
}
}
如果程序中没有if语句运行时将会陷入死循环,但此程序的输出结果顺序可能与自己想的有出入,结果如下:
由此可以明确了解逗号运算符的运算过程:逗号运算符会依次执行表达式,但最终结果只会输出最后的表达式
break和continue的区别:break会跳出所在循环,continue会结束本次循环,继续下一次循环