目录
一、表达式
二、赋值运算符与赋值表达式
1、变量赋初值
1.1、将常数赋值给变量
1.2、通过赋值表达式为变量赋初值
2、自动类型转换
3、强制类型转换
三、算数运算符与算数表达式
1、算术运算符
2、算术表达式
3、优先级与结合性
3.1、算术运算符的优先级
3.2、算术运算符的结合性
4、自增/自减运算符
4.1、自增运算符
4.2、自减运算符
四、关系运算符与关系表达式
五、逻辑运算符与逻辑表达式
1、逻辑运算符
2、逻辑表达式
3、优先级与结合性
六、位逻辑运算符号与位逻辑表达式
1、位逻辑运算符
2、位逻辑表达式
七、逗号运算符号与逗号表达式
八、复合赋值运算符号
#include
int main()
{
int iNumber1, iNumber2, iNumber3; /*声明变量*/
iNumber1 = 3; /*为变量赋值*/
iNumber2 = 7;
printf("the first number is :%d\n", iNumber1); /*显示变量值*/
printf("the second number is :%d\n",iNumber2);
iNumber3 = iNumber1 + 10; /*在表达式中利用iNumber1变量加上一个常量*/
printf("the first number add 10 is :%d\n", iNumber3); /*显示iNumber3的值*/
iNumber3 = iNumber2 + 20; /*在表达式中利用iNumber2变量加上一个常量*/
printf("the secnd number add 10 is :%d\n", iNumber3); /*显示iNumber3的值*/
iNumber3 = iNumber1 + iNumber2; /*在表达式中两个变量进行计算*/
printf("the result number of first and second is :%d\n", iNumber3); /*将计算结果输出*/
return 0;
}
在程序中,主函数main中第一行是声明变量的表达式,可以使用逗号通过一个表达式声明3个变量 。
一般形式:类型 变量名 = 常数;
一般形式:类型 变量名 = 表达式;
#include
int main()
{
int iHoursWorded = 8; /*定义变量,为变量赋值,表示工作时间*/
int iHourlyRate; /*声明变量,表示一个小时的薪水*/
int iGrossPay; /*声明变量,表示得到的工资*/
iHourlyRate = 13; /*为变量赋值*/
iGrossPay = iHoursWorded * iHourlyRate; /*将表达式的结果赋值给变量*/
printf("The HoursWorded is: %d\n", iHoursWorded); /*显示工作变量*/
printf("The HourlyRate is: %d\n", iHourlyRate); /*显示一个小时的薪水*/
printf("The GrossPay is: %d\n", iGrossPay); /*显示工作所得的工资*/
return 0;
}
如果将比较短的数值类型变量的值赋给比较长的数值类型变量,数据不会丢失;
如果将比较长的数值类型变量的赋值给比较短的数值类型变量,数据会降低级别显示;
当数据大小超过比较短的数值类型的可表示范围时,就会发生数据截断。
强制类型转换一般形式:(类型名)(表达式)
#include
int main()
{
char cChar; /*字符型变量*/
short int iShort; /*短整型变量*/
int iInt; /*整型变量*/
float fFloat = 70000; /*单精度浮点数*/
cChar = (char)fFloat; /*强制转换*/
iShort = (short)fFloat;
iInt = (int)fFloat;
printf("the char is : %c\n", cChar); /*输出字符变量值*/
printf("the short is : %d\n", iShort); /*输出短整型变量值*/
printf("the int is : %d\n", iInt); /*输出整型变量值*/
printf("the float is : %f\n", fFloat); /*输出单精度浮点变量值*/
return 0;
}
符号 | 功能 | 符号 | 功能 |
+ | 单目正 | % | 取模 |
- | 单目负 | + | 加法 |
* | 乘法 | - | 减法 |
/ | 除法 |
取模运算符“%”用于计算两个整数相除得到余数,并且取模运算符号两侧均为整数,例如7%4的结果是3。
使用算术表达式计算摄氏温度。
#include
int main()
{
int iCelsius, iFahrenheit; /*声明两个变量*/
printf("Please enter temperature :\n"); /*显示提示信息*/
scanf_s("%d", &iFahrenheit); /*在键盘中输入华氏温度*/
iCelsius = 5 * (iFahrenheit - 32) / 9; /*通过算术表达式进行计算,并将结果赋值*/
printf("Temperature is :"); /*显示提示信息*/
printf("%d", iCelsius); /*显示摄氏温度*/
printf(" degress Celsius\n"); /*显示提示信息*/
return 0;
}
使用scanf_s函数获得在键盘上输入的数据,其中%d是格式符,用来表示输入有符号的十进制整数。
*、/、%的优先级高于+、-的级别。
当运算符号的优先级相同时,结合方向为“自左向右”。
#include
int main()
{
int iNumber1, iNumber2, iNumber3, iResult = 0; /*声明整型变量*/
iNumber1 = 20;
iNumber2 = 5;
iNumber3 = 2;
iResult = iNumber1 + iNumber2 - iNumber3; /*加法,减法表达式*/
printf("the reult is : %d\n", iResult); /*显示结果*/
iResult = iNumber1 - iNumber2 + iNumber3; /*减法,加法表达式*/
printf("the reult is : %d\n", iResult); /*显示结果*/
iResult = iNumber1 + iNumber2 * iNumber3; /*加法,乘法表达式*/
printf("the reult is : %d\n", iResult); /*显示结果*/
iResult = iNumber1 / iNumber2 * iNumber3; /*除法,乘法表达式*/
printf("the reult is : %d\n", iResult); /*显示结果*/
iResult = (iNumber1 + iNumber2) * iNumber3; /*括号,加法,乘法表达式*/
printf("the reult is : %d\n", iResult); /*显示结果*/
return 0;
}
自增运算符“++”对变量的操作进行增加1。
自减运算符“--”对变量的操作进行减少1。
#include
int main()
{
int iNumber1 = 3; /*定义变量,赋值为3*/
int iNumber2 = 3;
int iResultPreA, iResultLastA; /*声明变量,得到自增运算的结果*/
int iResultPreD,iResultLastD; /*声明变量,得到自减运算的结果*/
iResultPreA = ++iNumber1; /*前缀自增运算*/
iResultLastA = iNumber2++; /*后缀自增运算*/
printf("The Addself...\n");
printf("the iNumber1 is : %d\n", iNumber1); /*显示自增运算后自身的数值*/
printf("the iResultPreA is : %d\n", iResultPreA); /*得到自增表达式中的结果*/
printf("the iNumber2 is : %d\n", iNumber2); /*显示自增运算后自身的数值*/
printf("the iResultLastA is :%d\n", iResultLastA); /*得到自增表达式中的结果*/
iNumber1 = 3; /*恢复变量值为3*/
iNumber2 = 3;
iResultPreD = --iNumber1; /*前缀自减运算*/
iResultLastD = iNumber2--; /*后缀自减运算*/
printf("The Deleteself...\n");
printf("the iNumber1 is : %d\n", iNumber1); /*显示自减运算后自身的数值*/
printf("the iResultPreD is : %d\n", iResultPreD); /*得到自减表达式中的结果*/
printf("the iNumber2 is : %d\n", iNumber2); /*显示自减运算后自身的数值*/
printf("the iResultLastD is :%d\n", iResultLastD); /*得到自减表达式中的结果*/
return 0;
}
如果运算符放在变量前面,那么变量在参加表达式运算之前完成自增或者自减;
如果运算符放在变量后面,那么变量的自增或者自减在变量参加表达式运算之后完成。
①前缀自增使得iResultPreA变量先进行自增操作,然后进行赋值处理;
②后缀自增使得iResultLastA变量先进行赋值操作(iResult先等于了iNumber2=3),然后进行自增操作(然后iNumber2进行了自增)。
1、关系运算符
符号 | 功能 | 符号 | 功能 |
> | 大于 | <= | 小于等于 |
>= | 大于等于 | == | 等于 |
< | 小于 | != | 不等于 |
2、关系表达式
关系运算符用于两个表达式的值进行比较,返回一个真值(1)或者假值(0)。
判断时不能用“=”,只能用“==”。
3、优先级与结合性
“!=”要比“==”优先级高
#define _CRT_SECURE_NO_WARNINGS
#include
int main()
{
int iChinese, iEnglish; /*定义两个变量,用来保持分数*/
printf("Enter Chinese score:"); /*提示信息*/
scanf("%d", &iChinese); /*输入分数*/
printf("Enter English score:"); /*提示信息*/
scanf("%d", &iEnglish); /*输入分数*/
if (iChinese > iEnglish) /*使用关系表达式进行判断*/
{
printf("Chinese is better than English\n");
}
if (iChinese < iEnglish) /*使用关系表达式进行判断*/
{
printf("English is better than Chinese\n");
}
if (iChinese == iEnglish) /*使用关系表达式进行判断*/
{
printf("Chinese equal English");
}
return 0;
}
符号 | 功能 |
&& | 逻辑与 |
|| | 逻辑或 |
! | 单目逻辑非 |
逻辑运算符根据表达式的真或者假属性返回真值或假值。在c语言中,表达式的值非零,那么其值为真。非零的值用于逻辑运算,则等价于1,假值总为0。
一般形式:表达式 逻辑运算符 表达式
“&&”与“||”是双目运算符,需要两个操作数,结合方向从左至右;
“!”是单目运算符,需要一个操作数,结合方向自左向右。
#include
int main()
{
int iNumber1, iNumber2; /*声明变量*/
iNumber1 = 10; /*为变量赋值*/
iNumber2 = 0;
printf("the 1 is Ture,0 is Flase\n"); /*显示提示信息*/
printf("5< iNumber1&&iNumber2 is %d\n", 5 < iNumber1 && iNumber2); /*显示逻辑与表达式的结果*/
printf("5< iNumber1||iNumber2 is %d\n", 5 < iNumber1 || iNumber2); /*显示逻辑或表达式的结果*/
iNumber2 = !iNumber1; /*得到iNumber1一次单目逻辑运算符的逻辑值*/
printf("iNumber2 is %d\n", iNumber2); /*输出逻辑值*/
iNumber2 = !!iNumber1; /*得到iNumber1两次单目逻辑运算符的逻辑值*/
printf("iNumber2 is %d\n", iNumber2); /*输出逻辑值*/
return 0;
}
位逻辑运算符可实现位的设置、清零、取反和取补操作。
符号 | 功能 |
& | 位逻辑与 |
| | 位逻辑或 |
^ | 位逻辑非 |
~ | 取补 |
在程序中,位逻辑运算符一般被程序员用作开关标志。较低层次的硬件设备驱动程序,经常对输入/输出设备进行位操作。
if(Field&BITMASK) /*if语句对后面括号中表达式进行检测。如果表达式返回真值,则执行下来的语句块,否则跳过该语句块,不执行。其中,运算符用来对BITMASK变量的位进行检测,判断是否与Field变量的位有吻合之处*/
1、在c语言中,可以用逗号将多个表达式分隔开。其中,用逗号分隔的表达式被分别计算,并且整个表达式的值是最后一个表达式。逗号表达式称为顺序求值运算符。
2、一般形式:表达式1, 表达式2, ..., 表达式n
3、逗号表达式的求解过程是:先求解表达式1,在求解表达式2,一直求解到表达式n。整个逗号表达式的值是表达式n的值。
#include
int main()
{
int iValue1, iValue2, iValue3, iResult; /*声明变量,使用逗号运算符*/
iValue1 = 10; /*为变量赋值*/
iValue2 = 43;
iValue3 = 26;
iResult = 0;
iResult = iValue1++, --iValue2, iValue3 + 4; /*计算逗号表达式*/
printf("the result is : %d\n", iResult);
iResult = (iValue1++, --iValue2, iValue3 + 4);
printf("the result is : %d\n", iResult);
return 0;
}
①第一个表达式中没有使用括号运算符,所以iResult 得到第一个表达式的值。在第一个表达式中,iValue变量进行的是后缀自加操作,所以iResult先得到iValue1的值,iValue1再进行自加操作。
②在第二个表达式中,使用了括号运算符,因此iResult变量得到的是第三个表达式iValue3+4的值,iResult变量赋值为30.
复合赋值运算符是c语言中独有的,是一种缩写形式,。
Value=Value+3;
也可以写成
Value+=3;
对于简单赋值运算符,如Func=Func+1,表达式中Func计算两次;对于复合运算符,如Func+=1中,表达式Func仅计算一次。
#include
int main()
{
int iTotal, iValue, iDetail; /*声明变量*/
iTotal = 100; /*为变量赋值*/
iValue = 50;
iDetail = 5;
iValue *= iDetail; /*计算得到iValue变量值*/
iTotal += iValue;
printf("Volue is : %d\n", iValue);
printf("Total is : %d\n", iTotal);
return 0;
}
iValue*=iDetail 表示 ivalue*iDetail的结果
iTotal+=iValue 表示 iTotal+iValue的结果