一、对C语言的初步认识
二、C语言基本数据类型、操作符和表达式
三、C语言顺序结构程序设计
四、C语言选择结构程序设计
五、C语言循环结构程序设计
六、C语言位运算
七、C语言数组与字符串
八、C语言指针
九、C语言中的函数
十、C语言中数据和存储类型
十一、C语言中的用户定义数据类型
十二、C语言中编译预处理命令
1、基本的算术运算符:
(1)+ (加法运算符,或正值运算符)
如:3+5
、+3
(2)- (减法运算符,或负值运算符)
如:5-2
、-3
(3)* (乘法运算符)
如:3*5
(4)/ (除法运算符)
如:5/3
(5)% (模运算符,或称求余运算符,%两侧均应为整型数据)
如:7%4
的值为3
需要说明,两个整数相除的结果为整数
—— 例如:5/3
的结果值为1,舍去小数部分
如果除数或被除数中有一个为负值,则舍入的方向是不固定的
——例如:-5/3
在有的机器上得到结果-1,有的机器则给出结果-2
多数C编译器采取“向零取整”的方法
——例如:5/3=1
,-5/3=-1
用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称C算术表达式。
运算对象包括常量、变量、函数等。
——例如:a*b/c-1.5+'a'
在算术运算符中除了“%”要求整数外,其余可以是任意数据类型
自增、自减运算符
作用是使变量的值增1或减1,即:
++j;
等效于:j=j+1;
j++;
等效于:j=j+1;
--j;
等效于:j=j-1;
j--;
等效于:j=j-1;
++j
与j++
,--j
与j--
的区别:
++j
:在使用j
之前,先使j
的值加(减)1;
j++
:在使用j
之后,使j
的值加(减)1
例如:int i=3; /* i:3 */
a=i++; /* i:4 a:3 */
b=++i; /* i:5 b:5 */
运算结果:
a=3
b=5
i=5
使用自增、自减运算符注意事项
(1)自增运算符(++)和自减运算符(–),只能用于变量,而不能用于常量或表达式。
例如:5++;
或(a+b)++
; 都是不合法的
(2)++和–的结合方向是“自右至左”
例如:
int i=3;
a=-i++;
结果: a=-3
a = -(i++);
(3)ANSI C并没有具体规定表达式中的子表达式的求值顺序。允许各编译系统自己安排。
例如:设i的初值为3,有表达式:
(i++)+(i++)+(i++)
3+4+5
,即12。i
的值,因此3个i
相加,得9。然后再实现自家3次,i
的值变为6。i=3; a=i++; b=i++; c=i++; d=a+b+c;
(4)C语言中有的运算符为一个字符,有的运算符由两个字符组成,在表达式中如何组合呢?
例如:
i+++j
是理解为(i++)+j呢?还是i+(++j)呢?
为避免误解,最好写成(i++)+j的形式。
如果没按,则视为(i++)+j
(5)调用函数时,实参数的求值顺序,C标准并无统一规定。
例如:i的初值为3,如果有下面的函数调用:
printf("%d,%d",i,i++)
——在有的系统中,从左至右求值,输出:3,3
——在另一种系统中,从右至左求值,输出:4,4
j=i++;
printf("%d,%d",j,i);
2、赋值运算符与赋值表达式
赋值是指将表达式的值赋给一个变量。
例如:
x=5*2+8;x=18;
v=volume(x,y,z);
x=(y=(z=100));
相当于:x=100; y=100; z=100;
3、自反(复合赋值)运算符
+=,-=,*=,/=,%=,<<=,>>=,&=,|=,^=
例如:
a=5; b=10; a*=a+b;
正确理解:a=a*(a+b)=a2+ab=75
不正确的理解:a=a*a+b=a2+b=35
注意:
设: x=20;
x*=10+2;x=?
等效于:x=x*(10+2)
多个符合赋值运算符表达式的运算顺序
a+=a-=a*a
1、先进行“a-=a*a”的运算
相当于:
a=a-a*a=12-144=-132
2、再进行“a+=-132”的运算
相当于:
a=a+(-132)=-132-132=-264
赋值表达式可以出现在其他语句
例如:
printf("%d",a=b);
如果b的值为3,则输出a的值(也是表达式a=b的值)为3
例如:
if((a=b)>0 max=a; //a=b赋值表达式
if((a=b;)>0 max=a; //a=b;赋值语句,语法错
printf
函数和scanf
函数#include
printf() (格式输出)
scanf() (格式输入)
putchar() (字符输出)
getchar() (字符输入)
#include
或 #include "stdio.h"
1、putchar
函数
putchar
函数的作用——是向终端输出一个字符。
用putchar
函数既可以输出能在屏幕上显示的字符;也可以输出控制字符;
——如:putchar('\n')
(输出一个换行符)
还可以输出其他转义字符,如:
putchar('\101') (输出字符'a')
putchar('\'') (输出单引号字符')
putchar('\015') (输出回车)
2、getchar
函数
int getchar(void);
例如:输入单个字符
#include
int main()
{
char c;
c=getchar();
putchar(c);
}
getchar()
只能接收一个字符getchar
函数得到的字符可以赋给一个字符变量或整形变量,也可以不付给任何变量,作为表达式的一部分putchar(getchar());
3、printf()
函数的一般格式:
printf(格式控制,输出表列);
例如:字符数据的输出:(Cpp6.cpp)
int main()
{
char c='a';
int i=97;
printf("%c,%d\n",c,c);
printf("%c,%d\n",i,i);
}
运行结果为:
a,97
a,97
main()
{
char a='x',b='y';
char c='w';
printf("\nc=%3c\n",c);
printf("\na=%8c\n,b=%-8c\n",a,b);
}
例子:
#include
main()
{
float s=1.0;
double a=1.0;
printf("\n基本型:\n%f,%f\n",s/3,a/3);
printf("\n宽度和小数位数控制:\n%10.2f,%15.12f\n",s/3,a/3);
printf("\n左对齐控制:\n%-10.2f,%-15.7f\n",s/3,a/3);
return 0;
}