C语言(常量、变量及表达式)
- 格式:ppt
- 大小:1.45 MB
- 文档页数:82
C语⾔详解-表达式和语句1. 什么是表达式?C语⾔中的表达式⼀种有值的语法结构,它由运算符将变量、常量、函数调⽤返回值结合⽽成。
1.1 变量变量名本⾝是⼀个表达式,表达式的值是变量当前的值。
复杂的表达式由[], ->, ., 和单⽬运算符*构成。
1.2 常量常量名本⾝是⼀个表达式,字⾯常量也是表达式。
对于这两者,表达式的值是常量当前的值。
1.3 函数调⽤对于返回值不为void的函数,对它的正确调⽤也是表达式。
表达式的值为函数的返回值。
1.4 操作符运算符⽤于连接表达式中的值。
以下是C语⾔中的运算符,运算符的优先级,及运算符的结合顺序OrderCategory Operator Operation Associativity1Highest precedence( )[ ]→: :.Function call L → RLeft to Right2Unary!~+-++- -&*Size of Logical negation (NOT)Bitwise 1’s complementUnary plusUnary minusPre or post incrementPre or post decrementAddressIndirectionSize of operant in bytesR → LRight -> Left3Member Access.*→*DereferenceDereferenceL → R4Multiplication*/%MultiplyDivideModulusL → R5Additive+-Binary PlusBinary MinusL → R6Shift<<>>Shift LeftShift RightL → R7Relational<<=>>=Less thanLess than or equal toGreater thanGreater than or equal toL → R8Equality==!=Equal toNot Equal toL → R9Bitwise AAND&Bitwise AND L → R 10Bitwise XOR^Bitwise XOR L → R 11Bitwise OR|Bitwise OR L → R 12Logical AND&&Logical AND L → R 14Conditional? :Ternary Operator R → L15Assignment=*=%=/=+=-=&=^=|=<<=>>=AssignmentAssign productAssign reminderAssign quotientAssign sumAssign differenceAssign bitwise ANDAssign bitwise XORAssign bitwise ORAssign left shiftAssign right shiftR → L>>=Assign right shift16Comma,Evaluate L → R1.5 实例/* 变量常量表达式 */asum10.5PI/* 算术表达式 */a + ba -b + ca *b + 'A'a /b -c + 10i++ + i++ + ++i/* 赋值表达式 */a = ba *=b += 20a =b =c = 10a = (b=4) / (c=2)/* 逗号表达式 */1+2, 3+4(10, a*5), a+10/* 关系表达式 */x == yx <= yx != y/* 逻辑表达式 */10 && 200 || 1(a>b) && (!0)/* 复合表达式 */x = ( y = (a + b), z=10)/* 表达式的应⽤ */if( !100 ) //!100为逻辑表达式printf("expression show!");for(int i=10; i<10; i++)//for包含3个表达式,分别为i=10 i<10 i++printf("expression show!");while( 1 ) //1也是⼀个表达式{printf("death loop!");}2. 语句语句指的是当程序运⾏时执⾏某个动作的语法结构。
第一章1,整型常量(整常数):占2个字节;定点实数(一般形式的实数)2,实型常量(只用十进制数) 浮点实数(带指数的实数):它由前置数,小写字母e 或大写 E ,指数 三部分组成:33310e 1e 正确,表示错误,(占用4个字节 有效数字是7位,12.3456789=12.34567)常 3,字符型常量(用单引号括起来的单个字符) ‘a ’ ‘2’ ‘*’‘!’量 转义字符常量:\n \0 \f 区分字母大小写‘a ’与‘A ’ (在内存中均占一个字符) 是不同的字符常量4,字符串常量(用双撇号括起来的若干个字符序列) “a ”“xyz ”字符串的长度为串中字符的个数,但是在内存中所占的字节数比长度多1, 因为‘\0’还占一个字节(‘a ’是字符常量占一个字节,而“a ”占两个字节('\0'占一个)'\0'是个空操作字符,输出时不含'\0'。
变量的主要作用时存放响应的常量(字符串常量是用字符数组来存放的)标识符(变量名:字母,数字,下划线)不能与专有名词重复,大小写不同Max 与max 是不同变量整型变量:int 基本整型 long 长整型 short 短整型(占2字节)(占4字节)实型变量:float 单精度实型 double 双精度变 类型 (系统分配4字节的存储空间)(占8字节)量 说明符(类型名) 字符型变量:char 占1字节char ch1='a' ,ch2='a';不能写成char ch1=ch2='a'双目运算符:+ - * / %(求余)/ 两整数相除其商为整数(取商的整数部分) 1/2结果为0% 两边的运算对象应为整数,其余数也为整数2mv 21写成0.5*m*v*v 或1.0/2*m*v*v 或m*v*v/2.0不要写成1/2*m*v*v 因为1/2结果为0算术运算符 c 中允许不同类型的量混合运算1,隐式转换(系统自动转换)2,显式转换(强制类型转换)单目运算i++,i--(使用i 值之后,是变量i 的值加1或减1)++i ,--i (在使用i 之前,先使i 值加1或减1)int i=5,j;J=i++ 得到j=i,再执行i++赋值运算符复合赋值:a+=b a=a+ba*=b a=a*ba%=b a=a%b!(逻辑非) &&(逻辑与) ||(逻辑或)单目 双目逻辑运算符用它将若干个表达式连接起来就形成了逗号表达式X = 3 + 5 , 4 + 6赋值表达式算术表达式结果为4+6的值10逗号表达式逗号运算符(a=5,a+8),a*4 由逗号表达式(a=5,a+8)和算术表达式a*4构成逗号表达式,整个表达式值为a*4的值即20X=3+5,4+6 和x=(3+5,4+6)逗号赋值结果都为10=的优先级大于逗号的优先级第二章一、赋值语句的功能是把表达式值算出后赋给变量二、字符输入/输出函数getchar:只能接收一个字符变量=getchar()圆括号内无参数Char ch:执行“ch=getchar();”时暂停程序的执行出现一个闪动的光标,键入一个字符后,程序继续向下运行若键入1234 则ch='1'putchar(c):c可以是:1,字符常量或已有值的字符变量2,整型常量或已有值的整型变量3,整型表达式换行putchar('a');putchar('\n');putchar(97);结果:aa程序中若出现getchar(),putchar()等函数时,前面须写”包含命令“#include<stdio.h>三、格式输入、输出函数printf("格式控制字符串",输出数据表列);%d 十进制整型格式%f 实型格式%c 字符型格式实际长度输出%md 指定长度输出若m大于输出数的位数则在输出数的前面补空至m位若m小于输出数的位数则按实际位数输出,即m失效%f 实型格式float x=234.567890printf("%10.3f\n",x);结果为———234.567(结果中的—代表一个空格符)%10.3f 指整个输出10位(含小数点一位,小数3位)%f 系统指定输出长度,整数部分全部输出,并输出六位小数,单精度除外,因为它的有效位数为7位若有定义语句:char ch1='a',ch2='b',ch3'c';printf("%c%c%c\n",ch1,ch2,,ch3);结果为abcscanf("格式控制字符串",输入对象地址表列)Scanf("%2d,%3d,%4d",&a,&b,&c);1,scanf函数输入实型数据时不能规定精度Scanf("%7.2f",&x) 是错误的2,scanf格式控制字符串后面对应的是”变量地址“而不是变量名3,“%c”格式输入时只能接收一个字符Scanf("%c%c%c",&ch1,&ch2,&ch3);程序结构表达式值为0代表“假”;表达式值非0代表“真”设x是一个整数,若!X值为0,则x值为非0,不能简单的说x值为1,因为非0也包含11,if (a<b){m=a;a=b;b=m;} 复合语句2,if (a<b)m=a,a=b,b=m; 逗号语句1,2等价If和(表达式)及语句s之间要留空(一个即可)常量,变量和函数也是表达式,他们是表达式的特例;If (3)语句s;if(a)语句s,等均为正确的if语句;实行运算中,常量尽可能的写成小数,如23写成23.0 减少系统类型转换时间条件运算符“?:”为条件运算符表达式1?表达式2:表达式3C中唯一一个三目运算Eg:w=p<=20.0?0.0:(p-20.0)*0.5;Y=x<0-1:(x==0?0:1);A b 两数求最大数值max,也可以用Max=a>b?a:b;等价于if (a>b) max=a;else max=b;SwitchSwitch(表达式){case 常量表达式1:语句1;break;Case 常量表达式2:语句2;break;Case 常量表达式3:语句3;break;、、、、、、、、Default :语句组n+1;}Eg:main(){int x,,i;char ch;Scanf("%d",&x);I=x/10;Switch(i)case 10:ch='A';break;Case 9:ch='B';break;Case 8:ch='C';break;case 7:ch='D';break;Case 6:ch='E';break;Default :ch='F';}Printf("%d--%c\n",x,ch);}Main(){int a=1,b=0;Switch(a){case 1:switch(b){case 0:a++;b++;Case 1:a++;break;Case 2:b++;}Case 2:a++;b++;break;Default:a++;}Printf("a=%d,b=%d\n",a,b);}程序的执行过程是这样的:最外层switch中表达式a等于1,执行case1后面的switch(b),表达式b等于0;执行a++,b++和case1后面的a++,终止里层switch,继续执行外层case2后面的“a++;b++”,终止外层switch,最后输出结果。
c语言常量表达式C语言中常量表达式是指在编译时就能确定值的表达式,常用于定义常量、数组长度、枚举值等。
常量表达式在编译时就被计算,可以提高程序的效率和可读性。
常量表达式可以使用任何C语言中的常量和运算符,包括整型、浮点型、字符型、枚举、sizeof、_Alignof等。
以下是常用的常量表达式:1. 整型常量表达式整型常量表达式由整型常量、运算符、括号组成,例如:const int a = 5;const int b = 2;const int c = (a + b) * 3;在上面的例子中,c的值为21,因为(a+b)*3=21。
2. 浮点型常量表达式浮点型常量表达式由浮点型常量、运算符、括号组成,例如:const float pi = 3.14f;const float r = 2.0f;const float area = pi * r * r;在上面的例子中,area的值为12.56f,因为pi*r*r=3.14f*2.0f*2.0f=12.56f。
3. 字符型常量表达式字符型常量表达式由字符常量、运算符、括号组成,例如:const char ch1 = 'a';const char ch2 = 'b';const char ch3 = ch1 + ch2;在上面的例子中,ch3的值为'ab',因为ch1+ch2='a'+'b'='ab'。
4. 枚举常量表达式枚举常量表达式由枚举常量、运算符、括号组成,例如:enum color {RED, GREEN, BLUE};const int a = RED;const int b = GREEN;const int c = a + b;在上面的例子中,c的值为1,因为a+b=0+1=1。
5. sizeof常量表达式sizeof常量表达式用于计算变量或类型的大小,例如:const int a = 5;const int b = sizeof(a);在上面的例子中,b的值为4,因为int类型占4个字节。