基本数据类型
基本数据类型包括空类型、字符型和数值型。而数值型包括实型和整型
内存以字节为单位,每个字节都有一个地址。1个字节=8位
整型 int 在大多数机器上占4个字节,TC环境中占2个字节;单精度实型float 占4个字节;双精度实型double 占8个字节;字符型char 占1个字节
在虚拟机中用程序查看部分类型数据的字节长度如下:
例1:运行如下程序并给出结果
#include <stdio.h>
#include<string.h>
int main()
{
char a[1000]={0};
int i;
for(i=0;i<1000;i++)
{
a[i]=-1-i;
}
printf("%d\n",strlen(a));
return 0;
}
strlen 求字符串的长度,遇到‘\0’结束。字符’\0’对应的数字(ASC码是0)
例2.程序如下,给出运算结果
#include <stdio.h>
int main()
{
int i=-20;
unsigned int j=10;
printf("%d\n".i+j);
return 0;
}
结果如下:
两种不同类型混合运算,先转换成能够表示范围较大的类型。
char -128~127 ;
unsigned 0~255;当有符号和无符号一起运算时,转换成无符号。则上方程序中的-20转换成无符号数。
常量是一种在程序中保持固定类型和固定值的数据。编译系统从数据形式上可以区分。常量分为:整型常量、实型常量、字符常量、字符串常量和枚举常量。而变量是在程序执行过程中可以改变。
字符常量的表示方法:‘a’,‘A’ 单引号内只能有一个字符。用’‘开头的字符为转义字符如:’\n’,代表1个字符。列举一些转义字符如下:
\n:换行
\t:水平制表
\v :垂直制表
\b:退格
\r:回车
\f:换页
\a :响铃
\ :反斜线
\‘ :单引号
\“:双引号
\ddd :3位8进制代表的字符
\xhh:2位16位代表的字符
字符串常量是一对双撇号括起来的字符序列。
例:程序与对应的结果
运算符与表达式
C的运算符有以下几类:
(1)算术运算符(+ - * / %)
(2)关系运算符(> < == >= <= !=)
(3)逻辑运算符(! && ||)
(4)位运算符(<< >> ~ | ^ &)
(5)赋值运算符(=及其扩展赋值运算符)
(6)条件运算符(?:)
(7)逗号运算符(,)
(8)指针运算符(*和&)
(9)求字节数运算符(sizeof)
(10)强制类型转换运算符((类型))
(11)分量运算符(. ->)
(12)下标运算符([])
(13)其他(如函数调用运算符())
运算符的优先级:三目运算符<逻辑运算符<关系运算符<移位运算符<算数运算符<单目运算符<函数符号()和数组下标[]
自增、自减运算符
作用是使变量的值增1或减1
如:
++i,–i (在使用i之前,先使i的值加(减)1)
i++ i-- (在使用i之后,使i的值加(减)1)
i++与i–的区别:
++i是先执行i=i+1后,再使用i的值;
i++是先使用i的值后,在执行i=i+1
例:运行程序显示其结果
If和switch语句
if语句是c语言中最简单、最常用的语句。
if(表达式1)语句1
else if(表达式2)语句2
else if(表达式3)语句3
……
else if(表达式m)语句m
else 语句n
else总是与它上面的,最近的,统一复合语句中的,未匹对的if语句配对;当if和else数目不同时,可以加花括号来确定配对关系。
while与for语句
1.while(表达式)语句 :
当表达式为非0值时,执行while语句中的内嵌语句。其特点是:先判断表达式,后执行语句。
2. do
循环体语句
while(表达式);
do-while语句的特点:先执行循环体,然后判断循环条件是否成立
3.for
for(表达式1;表达式2;表达式3)语句
:不可省略,表达式可省略
countine语句
countine语句作用为结束本次循环,即跳出循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判断。
break语句
break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。
注意:break语句不能用于循环语句和switch语句外的任何其他语句中。
例1:
例2:程序及其结果
例3:上题用if语句改写