C语言中基本的数据类型 和常用表达式

1.基本数据类型

2.常量

a.整型常量,也就是整常数。

1.十进制整数。如356,-120,0。

2.八进制整数。八进制形式的常量都以0开头,如0123,也就是十进制的83;-011,也就是十进制的-9。

3.十六进制整数。十六进制的常量都是以0x开头,如0x123,就是十进制的291

b.实型常量。

1.十进制小数形式。这个我们应该很熟悉了,小学就学了的,不过注意:0.0也是实型常量。

2. 指数形式。上过初中的都应该知道科学计数法吧,指数形式的常量就是科学计数法的另一种表示,比如123000,用科学计数法表示为1.23×10的5次 方,用C语言表示就是1.23e5或1.23E5,注意e或E的前面必须要有数字,而且e或E后面的数字一定要是整数。

c.字符型常量。

1.一般形式。一个字符用''括起来,注意只能有一个字符。

2.特殊形式。特殊形式都是以\开头,它们在屏幕上不会直接显示出来,而是根据其特定的功能来显示的,这些特殊字符常量有:

\n换行,相当于敲一下回车。

\t跳到下一个tab位置,相当于按一下键盘上的tab键。

\b退格,相当于按一下backspace。

\r使光标回到本行开头。

\f换页,光标移到到下页开头。

\\输出\字符,也就是在屏幕上显示一个\字符。

\'输出'字符,也就是在屏幕上显示一个'字符。

\"输出"字符,也就是在屏幕上显示一个"字符。

\ddd1位到3位八进制数表示的字符。

例如:使用'\376',则在屏幕上显示一个黑色的方块。

\xhh1位到2位十六进制数表示的字符。注意x不能丢了。

d.字符串常量,注意字符串常量和字符型常量是不一样的。

字符串常量与字符常量不同的地方是,字符串常量是用""把字符串括起来,所以'a'和"a"是不一样的,而且系统会在字符串常量的末尾自动加一个字符串结束标志('\0')。

3.C语言中的运算符

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右


()

圆括号

(表达式)/函数名(形参表)


.

成员选择(对象)

对象.成员名


->

成员选择(指针)

对象指针->成员名


2

-

负号运算符

-表达式

右到左

单目运算符

(类型)

强制类型转换

(数据类型)表达式


++

自增运算符

++变量名/变量名++

单目运算符

--

自减运算符

--变量名/变量名--

单目运算符

*

取值运算符

*指针变量

单目运算符

&

取地址运算符

&变量名

单目运算符

!

逻辑非运算符

!表达式

单目运算符

~

按位取反运算符

~表达式

单目运算符

sizeof

长度运算符

sizeof(表达式)


3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

双目运算符

%

余数(取模)

整型表达式/整型表达式

双目运算符

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

双目运算符

5

<<

左移

变量<<表达式

左到右

双目运算符

>>

右移

变量>>表达式

双目运算符

6

>

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

双目运算符

<

小于

表达式<表达式

双目运算符

<=

小于等于

表达式<=表达式

双目运算符

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

双目运算符

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

表达式1? 表达式2: 表达式3

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左


/=

除后赋值

变量/=表达式


*=

乘后赋值

变量*=表达式


%=

取模后赋值

变量%=表达式


+=

加后赋值

变量+=表达式


-=

减后赋值

变量-=表达式


<<=

左移后赋值

变量<<=表达式


>>=

右移后赋值

变量>>=表达式


&=

按位与后赋值

变量&=表达式


^=

按位异或后赋值

变量^=表达式


|=

按位或后赋值

变量|=表达式


15

,

逗号运算符

表达式,表达式,…

左到右

从左向右顺序运算

说明:

同一优先级的运算符,运算次序由结合方向所决定。

由于C语言中运算符多,优先级复杂,难以记忆,针对上述运算符,我们可以归纳成几名口诀,以便于记忆:

优先级口诀

括号成员第一;              括号运算符[]() 成员运算符. ->

全体单目第二;              所有的单目运算符比如++ -- +(正) -(负) 指针运算*&

乘除余三,加减四;         这个"余"是指取余运算即%

移位五,关系六;           移位运算符:<< >> ,关系:> < >= <= 等

等于(与)不等排第七;    即== !=

位与异或和位或;          这几个都是位运算: 位与(&)异或(^)位或(|)

"三分天下"八九十;

逻辑或跟与;                 逻辑运算符:|| 和 &&

十二和十一;                 注意顺序:优先级(||) 底于 优先级(&&)

条件高于赋值,                三目运算符优先级排到 13 位只比赋值运算符和","高

逗号运算级最低!         逗号运算符优先级最低

4.标准的输入输出使用(使用格式化输入输出)

/*标准输入输入*/
#include<stdio.h>

int main(void){
	char c;		      //定义一个字符变量
	printf("输入一个字符:");//输出函数printf();
	scanf("%c",&c);	      //输入函数scanf();
	printf("你输入的字符是%c\n",c);
}
 


5.C语言类型转换

a.自动类型转换

(1). 在表达式中,char 和 short 类型的值,无论有符号还是无符号,都会自动转换成 int 或者 unsigned int(如果 short 的大小和 int 一样,unsigned short 的表示范围就大于 int,在这种情况下,unsigned short 被转换成 unsigned int)。因为它们被转换成表示范围更大的类型,故而把这种转换称为“升级(promotion)”。

(2). 按照从高到低的顺序给各种数据类型分等级,依次为:long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int 和 int。这里有一个小小的例外,如果 long 和 int 大小相同,则 unsigned int 的等级应位于 long 之上。char 和 short 并没有出现于这个等级列表,是因为它们应该已经被升级成了 int 或者 unsigned int。

(3). 在任何涉及两种数据类型的操作中,它们之间等级较低的类型会被转换成等级较高的类型。

(4). 在赋值语句中,= 右边的值在赋予 = 左边的变量之前,首先要将右边的值的数据类型转换成左边变量的类型。也就是说,左边变量是什么数据类型,右边的值就要转换成什么数据类型的值。这个过程可 能导致右边的值的类型升级,也可能导致其类型降级(demotion)。所谓“降级”,是指等级较高的类型被转换成等级较低的类型。

(5). 作为参数传递给函数时,char 和 short 会被转换成 int,float 会被转换成 double。使用函数原型可以避免这种自动升级。

b.强制类型转换

格式 (type) 表达式;  type表示数据类型。 例:double m=1.6+1.7; 和 double m=(int) 1.6+(int)1.7;前者结果为3.300000,后者为2.00000;

6. 流程控制语句

a.选择语句:选择语句有if语句和switch语句两种。

/*流程控制语句*/
#include<stdio.h>

int main(void){
	int age=18;
	if(age==18){
		printf("条件成立\n");
	}else{
		printf("条件不成立\n");
	}

	switch(age){
		/*如果不用break执行这句表达式后会继续执行case 30: 
		直到遇到break才跳车switch语句,否则一直运行到switch语句结束*/
		case 18: printf("age=18执行\n");break;
		case 30: printf("age=30执行\n");break;
	}
}
 


b.循环语句:循环语句有for、while和do_while三种。

/*循环语句*/
#include<stdio.h>

int main(void){
	int i;
	int sum=0;
	for(i=0;i<=50;i++){
		sum=sum+i;
	}
	printf("0+1+......+50=%d\n",sum);

	while(i<=100){
		sum+=i;
		i++;
	}
	printf("0+1+.....+100=%d\n",sum);
	do{
		sum+=i;
		i++;
	}while(i<=150);
	printf("0+1+.....+150=%d\n",sum);
}
 


     while 和do while区别在是while是先进行逻辑判断在确定是否执行循环体,

do while是先循环体执行一次在进行判断是否继续执行。

c.转移语句: 转移语句有break、continue、return和goto四种,它们都能改变程序原来执行顺序并转移到其它位置继续执行。



转载于:https://my.oschina.net/hxwny/blog/287535

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值