C语言——基本数据类型、运算符及表达式的一些问题

1、整型常量可以带正负号,也可以不带。实型数都有符号

2、二进制:B   八进制:O     十进制:      十六进制:H

3、float型:单精度浮点型,内存中占四个字节,有效位为7位(有一位符号位)

4、double型:双精度浮点型,内存中占8字节,有效位16位

5、“a”的ASCII码97,“A”的ASCII码65

6、转义字符:“\t”-制表,“\n”-回车换行,“\b”-退格,“\r”-回车,“\f”-走纸换页,“\101”-‘A’

7、关于表达式的计算顺序

        通常单目、三目和赋值运算符(包括复合赋值)、条件表达式右结合性,就是在表达式中最右边的操作最先执行,然后从右到左依次执行。类似地,具有左结合性的操作符其他都是左结合性。

(1)对于三目运算 ,在C中与它优先级相同的只有它自己,因此只有连续的才会体现出它的右结合性,即a?b:c?d:e中,根据右结合性可知应理解为a?b:(c?d:e)。显然,上述问题中是体现不出这种结合性来的。

(2)赋值语句如下:

int a,b=1,c=2;

a=b=c;

c先赋值给b,然后b在赋值给a,最终a的值是2。

(3)条件表达式:a?b:c表示如果a为真,则表达式值为b,如果a为假,则表达式值为c
条件语句:

if(a>b) max=a;
else max=b;

可用条件表达式写为

max=(a>b)?a:b;

执行该语句的语义是:如a>b为真,则把a赋予max,否则把b赋予max.

a>b?a:c>d?c:d

应理解为

a>b?a:(c>d?c:d)

(4)逗号运算符的求值顺序是从左到右顺序求值,并且整个表达式的值等于最后一个表达式的值,注意逗号','还可以作为函数参数的分隔符,变量定义的分隔符等,这时候表达式的求值顺序是没有规定的!

        判断表达式计算顺序时,先按优先级高的先计算,优先级低的后计算,当优先级相同时再按结合性计算。

8、按位运算符是一个的如|、&,逻辑运算符是两位的如:||、&&

9、5%-3结果为2,因为商-1余2;-5%3结果为-2,因为商-1余-2;-5%-3结果为-2,因为商1余-2

10、自增、自减运算符(++、--)

前缀形式:如++i,先加1,再参与其他运算

后缀形式:如i++,先参与其他运算再对变量自动加1

#include<stdio.h>
int main()
{
	int i=3,j=10,m,n,p,q;
	m=++i;               //先执行 i=i+1,再将i值赋给m 
	n=i++;               //先将i值赋给n,再执行i=i+1 
	p=--j;               //先执行 j=j-1,再将j值赋给p
	q=j--;               //先将j值赋给q,再执行j=j-1 
	printf("i=%d,m=%d,n=%d\n",i,m,n);
	printf("j=%d,p=%d,q=%d\n",j,p,q);
}

注意:(1)++和--只能用于变量,不能用于常量和表达式

           (2)++和--的运算优先级是一样的,结合方向是自右向左,例如:-k++可以被看做-(k++),如果k的初值为3,整个表达式的值为-3,k的最终结果为4

11、计算开方:sqrt函数      计算sin:sin(x)     计算x的y次方:power(x,y)     计算e的x次方:y = exp(x)

       产生一个随机数并返回这个数:rand()      

12、逻辑运算符:有0与(&&)为0,有1或(||)为1。单目运算符(!)优先级>双目运算符(&&>||)。

例题:判断某一年是否是闰年。条件如下:①能够被4整除,但是不能被100整除②能够被400整除

则表达式如下:

(year%4==0)&&(year%100!=0)||(year%400==0)

13、优先级:单目运算符(!、取反符、自加自减、*指针、&取地址)(结合方向自右向左>  算数运算符(*/%、+-、左移右移)>  关系运算符  >   判等判不等   >   按位运算符(&、^、|)>    逻辑运算符(&&、||)>   条件运算符结合方向自右向左>   赋值运算符(结合方向自右向左)>    逗号运算符

设有int a=10,b=20,c=30,执行a=--b<=a||a+b!=c后,a和b的值是多少

根据上面规则,先计算--b=19,在计算19<=a,结果为0,再计算a+b!=c,即19!=30结果为1,接着计算0||1,结果为1,把这个值赋给a,则最终的结果为a=1,b=19

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值