运算符和表达式
1 表达式
表达式分为简单表达式和复杂表达式
#include <stdio.h> ? int main(void) { 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; ? printf("the first number add 10 is %d\n",iNumber3); /*打印iNumber3的值*/ ? iNumber3 = iNumber1 +iNumber2; printf("the result number of the first add the second is:%d\n",iNumber3); ? return 0; }
2.赋值运算符与赋值表达式
2.1 变量赋初值
变量赋值为常数 类型 变量名 = 常数char cChar = 'A'; int iFirst =100; float fPlace =1525.121; 赋值表达式为变量赋初值 类型 变量名 = 表达式int iAmount =1+2; float fPrice = fBase +Day*3;
2.2 自动类型转换
float i =10,1f; int j =i;//提示会损失精度的报警
2.3 强制类型转换
(类型名)(表达式)
float i=10.1f; int j = (int)i;/*进行强制类型转换*/ #include <stdio.h> //强制类型转换 int main(void) { 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 long is %ld\n",iShort); printf("the int is %d\n",iInt); printf("the float is %f\n",fFloat); ? return 0; } ? /* the char is p the long is 4464 the int is 70000 the float is 70000.000000 Press any key to continue ? ? */
3.算术运算符与算术表达式
C语言中有两个单目运算符、5个双目运算符。
3.1 算术运算符
符号功能符号功能+单目正%取模-单目负+加法*乘法-减法/除法
3.2 算术表达式
在表达式中使用算术运算符,则将表达式称为算术表达式。
#include <stdio.h> int main(void) { int iCelsius,iFahrenheit;/*申明两个变量*/ printf("Please enter temperature :\n"); scanf("%d",&iFahrenheit); iCelsius = 5*(iFahrenheit-32)/9; ? printf("Temperature is:"); printf("%d",iCelsius); ? printf(" degrees Celsius\n"); ? return 0; }
3.3 优先级和结合性
在表达式求值时,先按照运算符的优先级别高低次序指向,算术运算符中* / %的优先级别高于+-的级别。
3.4 自增/自减运算符
算术运算符的优先级相同时,结合放心为“自左向右”。
#include <stdio.h> int main(void) { int iNumber1,iNumber2,iNumber3,iResult=0; iNumber1 =20; iNumber2 =5; iNumber3 =2; iResult = iNumber1+iNumber2-iNumber3;//加法 减法 printf("the result is %d\n",iResult); iResult = iNumber1-iNumber2-iNumber3;//减法 加法 printf("the result is %d\n",iResult); iResult = iNumber1+iNumber2*iNumber3;//加法 乘法 printf("the result is %d\n",iResult); iResult = iNumber1/iNumber2*iNumber3;//除法 乘法 printf("the result is %d\n",iResult); }
4.关系运算符与关系表达式
在C语言中海油两个特殊的运算符,即自增运算符 “++”和自减运算符"--"。 --Counter; //前自减 Grade--;//后自减 ++Age;//前自加 Height++;//后自加
4.1 关系运算符
符号功能符号功能>大于<=小于等于>=大于等于==等于<小于!=不等于
4.2 关系表达式
关系运算符用于对两个表达式的值进行比较,返回一个真值或者假值。返回的值是真还是假取决于表达式中的值和所用的运算符。
4.3 优先级与结合性
关系运算符的结合性都是自左向右的。使用关系运算符时常常会判断两个表达式的关系。 #include <stdio.h> int main(void) { 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\n"); } return 0; }
5.逻辑运算符与逻辑表达式
逻辑运算符
符号功能&&逻辑与||逻辑或!单目逻辑非
"&&"和 "||"是双目运算符,他们要求有两个操作数,结合方向至左向右。"!"是单目运算符,要求有一个操作数。
#include <stdio.h> int main(void) { int iNumber1,iNumber2; iNumber1=0; iNumber2=0; printf("the 1 is true,0 is false!\n"); printf("5< iNumber1&& iNumber2 is %d\n",5<iNumber1&&iNumber2); printf("5< iNumber1||iNumber2 is %d\n",5<iNumber1||iNumber2); iNumber2=!iNumber1; printf("iNumber2 is %d\n",iNumber2); return 0; }
6.位逻辑运算符与位逻辑表达式
位逻辑运算符包括位逻辑与、位逻辑或、位逻辑非、取补。
符号功能&位逻辑与|位逻辑或^位逻辑非~取补
7.逗号运算符与逗号表达式
在C预言中,可以用逗号将多个表达式分隔开来。其中,用逗号分隔的表达式被分别计算,并且整个表达式的值是最后一个表达式的值。 #include <stdio.h> int main(void) { int iValue1,iValue2,iValue3,iResult; iValue1=10; iValue2=54; iValue3=26; iResult=0; iResult = iValue1++,--iValue2,iValue3+4; printf("the result is %d\n",iResult);//结果是10 iResult = (iValue1++,--iValue2,iValue3+4); printf("the result is %d\n",iResult);//结果是30 return 0; }
8.复合赋值运算符
复合赋值是C语言中独有的,实际这种操作是一种缩写形式。
例如
- 为了简化程序
- 为了提高编译效率
value+=3;//value=value+3; value-=3;//value=value-3; value*=3;//value=value*3; value/=3;//value=value/3; #include <stdio.h> int main(void) { int iTotal,iValue,iDetail; iTotal=100; iValue=50; iDetail=5; iValue*=iDetail; iTotal+=iValue; printf("iValue = %d iTotal = %d\n",iValue,iTotal); return 0; }