【C语言基础】数据类型、运算符和表达式

1 数据类型

  • 基本类型
    • 整型:短整型,基本整型,长整型
    • 字符型
    • 实型(浮点型):单精度型,双精度型
    • 枚举类型
  • 构造类型:是使用基本类型的数据 或者使用已经构造好的数据 类型,进行添加、设计构造出新的数据类型,使其设计的新构造类型满足待解决问题所需要的数据类型。
    • 数组类型
    • 结构体类型
    • 共用体类型
  • 指针类型
  • 空类型:关键字是void。

2 常量和变量

2.1 常量

2.1.1 数值型常量 - 整型常量

  • 十进制整数:没有前缀。无符号数范围为0~65535;有符号数范围为-32768~+32768。
  • 八进制整数:以0开头。无符号数范围为0~0177777。
  • 十六进制整数:以0x或0X开头。无符号数范围为0x0~0xFFFF。

长整型数是用后缀L或l来表示,如:123L,789l,042L,0377777L,0x1al,0x2FFFFL。

整型数据在内存中以二进制形式存放,数值以补码表示。正数的补码与它的原码一致,负数的补码是它的绝对值的二进制形式,按位取反再加1。

如:-11

绝对值为0000000000001011,按位取反为1111111111110100,再加1 为1111111111110101,即1111111111110101是-11在内存中存储的情况。

注:对于有符号整数,它在内存存放的最左边一位表示符号,0为正,1为负。

2.1.2 数值型常量 - 实型常量(浮点型常量)

 十进制的有符号实数,由整数和小数组成。当十进制数加上e或E以及阶码组成时,其为指数形式,如234e2或234E2,表示234x10^2。

2.1.3 字符型常量

字符常量

  • 一般字符:由单引号括起的单个字符。
  • 转义字符:
常用转义字符表
转义字符意               思
\n回车换行

\f

横向跳到下一制表位置
\v竖向跳格
\b退格
\r回车
\f走纸换页
\\反斜线符
\'单引号符
\"双引号符
\a鸣铃
\ddd1~3位八进制数所代表的字符
\xhh1~2位十六进制数所代表的字符

字符串常量

由双引号括起的若干个字符,如"Hello, world!"。

注:C语言中存储字符串常量时,系统会自动在字符串末尾加一个\0作为字符串结束的标志。字符常量则没有,存储的是字符的ASCII码值。

2.1.4 符号常量

在C语言中,瘵程序 中的常量定义为一个标识符,这个常量就叫做符号常量。在使用符号常量前,首先需要定义,通常使用大写字母表示。

2.2 变量

变量关键字及内存大小
关键字类型名称内存大小
char字符型1个字节(8位)
int整型4个字节(32位)
short短整型2个字节(16位)
long长整型4个字节(32位)
long long更长的长整型8个字节(64位)
float单精度4个字节(32位)
double双精度8个字节(64位)
long double长双精度8个字节(64位)

字符型数据可以字符形式输出,也可以整数形式输出。

例如:

#include <stdio.h>
main()
{
	char c1, c2;
	c1 = 'a';
	c2 = c1 + 10;
	printf("c1: %d, %c\n", c1, c1);
	printf("c2: %d, %c\n", c2, c2);

}

输出为

c1: 97, a
c2: 107, k

3 运算符和表达式

运算符、变量和函数一起组成表达式。

运算符
运算符意思运算方向运算对象个数优先级
()圆括号(函数等)左 -> 右1
[]数组、下标
->指向结构体成员
.结构成员访问
!

逻辑非。

0取非为1,其它任意非0数值取非都为0。

左 <- 右单目2
~按位取反
++

自增。

变量在前:先使用再自增;

变量在后:先自增再使用;

--

自减

变量在前:先使用再自减;

变量在后:先自减再使用;

+正号
-负号
*指针运算符
&取地址
(类型)

强制类型转换。

如:

char a;

float b=10000;

a=(char)b;  /*强制转换赋值*/

sizeof

求内存大小。

使用方式:

a) sizeof(变量名)。

b) sizeof(数据类型名)。

c) sizeof 变量名。

*左 -> 右双目3
/
%

取余(求模)。

参与运算的量需均为整数。

+左 -> 右双目4
-
<<左移左 -> 右双目5
>>右移
<小于左 -> 右双目6
<=小于等于
>=大于等于
>大于
==等于左 -> 右双目7
!=不等于
&

按位与。

只有两个数的二进制同时为1,结果才为1,否则为0。

左 -> 右双目8
^

按位异或。

当两个数的二进制相同时,结果为0,否则为1。

左 -> 右双目9
|

按位或。

只有两个数的二进制同时为0,结果才为0,否则为1。

左 -> 右双目10
&&

逻辑与。

只有都为真(1)时,结果才为1,否则结果为0

左 -> 右双目11
||

逻辑或。

只要有一个为真(1),结果就为1

左 -> 右双目12
?:

条件

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

表达式1为真,则采用表达式2,否则采用表达式3. --> 前真后假

左 <- 右三目13
=、+=、-=、*=、/=、&=、^=、|=、<<=、>>=各种赋值。先运算再赋值。左 <- 右双目14
,逗号(顺序求值)左 -> 右15

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值