2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换

时间:2023-01-28 21:29:39


 

常量:#define const 字符串常量

1 8 10 16 进制转换

sizeof关键字

变量 int folat char 

类型限定 const volatile register

输入输出 printf scanf

运算符 = + - *  / % += -= *= /= %= ++ -- , 运算符优先级

代码块{}

类型转换


1         C语言中的数据类型

1.1      常量

常量就是在程序中不可变化的量,常量是不可被赋值的。

1.1.1         #define

#define的本质就是简单的文本替换

通过#define定义的常量,在C语言里面一般叫宏定义

 

 

1.1.2         const

const定义一个变量,但是这个变量的值只能在定义的时候赋予,之后就不可以修改。

对于const类型的变量,一定要在定义的时候给变量赋初值,不然定义之后就无法赋值了。

 

1.2      字符串常量

C语言当中“”引用的字符串都是字符串常量,常量一旦定义也是不可以被修改的。

1.3      位,字节,字

1.3.1         

计算机内部都是二进制的,一个二进制的位,就叫做一个bit,就是一位

1.3.2         二进制

逢二加1,在二进制表达数的时候是只有01,而没有2这个数的

二进制最大表示的数,就是2几次幂

对于8位的CPU来讲,最大表达的数是28次幂

1.3.3         十进制

101,只有从0 9的数,没有10这个数,


2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换

1.3.4         八进制

07,逢81

C语言中八进制是数字前面加0

1.3.5         十六进制

0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,10

161

C语言当中表达一个十六进制数的方式,数字前面加0x前缀

1.3.6         字节

8bit为代表一个字节

1.4      sizeof关键字

sizeofsize_t类型

sizeof是计算数据在内存当中占多大空间的,单位字节

由于sizeof永远返回的是一个大于等于0的整数,所以如果用int来表示sizeof的返回值就不合适,size_t一般就是一个无符号的整数.

1.5      十进制,二进制,八进制,十六进制


2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换

1.6      int类型

1.6.1         int常量,变量

一个int型数据占据4个字节的内存大小,在16位操作系统下,int2个字节,在3264位操作系统下,int4个字节。

int a;//代表在内存当中开辟一个4个字节大小的空间

a = 10;//代表4个字节的空间内容是常量10

小端对齐和大端对齐

高地址放高位,底地址放低位---小端对齐

高地址放低位,底地址放高位大端对齐

对于大型unixCPU都是按照大端对齐方式处理int

但对于x86构架CPU,还有ARM,是小端对齐的

2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换


2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换


 



 

1.6.2         printf输出int

int a = 0x100;//十六进制

printf(“%d”,a);%d的意思是按照10进制打印一个整数

%x

%X,输出十六进制的时候是用大写的ABCDEF还是小写的abcdef

1.6.3         printf输出八进制和十六进制

%o

1.6.4         shortlonglong longunsigned int

32位系统下:

short = 2个字节

longint一样,是4字节

long long 8个字节

64位操作系统下

int4个字节

long 在大多数64位系统下8个字节

unsigned int//无符号整数

unsigned long//无符号的长整数

unsigned short//无符号短整数

 

9l,9L,9ll,9LL,9u,9ull,9ULL

1.6.5         整数溢出

当把一个大的整数赋值给小的整数,叫溢出。

int I = 0x12345678

short a = I;

当一个int赋值给short,会将高位抛弃,

1.7      char类型

1.7.1         char常量,变量

char是字符型,代表一个字节的内存

char在内存当中,有符号最大7f,

无符号,最大ff

unsigned char

char的本质就是一个字节,一个BYTE

1.7.2         printf输出char

%c

1.7.3         不可打印char转义符

\a,警报

\b退格

\n换行

\r回车

\t制表符

\\斜杠

\’单引号

\”双引号

\?问号

1.7.4         charunsigned char

char取值范围为-128127

unsigned char0-255

1.8      浮点float,double,longdouble类型

1.8.1         浮点常量,变量

float f = 2.5;

double f1 = 3.1415926

 

1.8.2         printf输出浮点数

 

%f,%Lf

1.9      类型限定

1.9.1         const

const限定一个变量的值不可以改变

1.9.2         volatile

告诉编译器不要自作聪明的给我优化代码,把我的变量优化的寄存器里面计算,只要是volatile类型变量,每一步都需要从内存当中读取。


2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换

1.9.3         register

register告诉编译器,这个变量只是用寄存器就好,提高效率,所以说register只是一个建议,而不是必须的结果。

2         字符串格式化输出和输入

2.1      字符串在计算机内部的存储方式

字符串是内存中一段连续的char空间,以’\0’结尾

字符串就是0结尾的连续char的内存

2.2      printf函数,putchar函数

printf格式字符

字符

对应数据类型

含义

d

int

接受整数值并将它表示为有符号的十进制整数

hd

Short int

短整数

hu

Unsigned short int

无符号短整数

o

unsigned int

无符号8进制整数

u

unsigned int

无符号10进制整数

x / X

unsigned int

无符号16进制整数,x对应的是abcdefX对应的是ABCDEF

f

floatdouble

单精度浮点数双精度浮点数

e / E

double

科学计数法表示的数,此处"e"的大小写代表在输出时用的“e”的大小写

c

char

字符型。可以把输入的数字按照ASCII相应转换为对应的字符

s / S

char * / wchar_t *

字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)

p

void *

16进制形式输出指针

%

%

输出一个百分号

printf附加格式

字符

含义

l

附加在d,u,x,o前面,表示长整数

-

左对齐

m(代表一个整数)

数据最小宽度

0

将输出的前面补上02 C语言 常量,进制,类型限定 输入输出 运算符 类型转换直到占满指定列宽为止2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换不可以搭配使用2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换-2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换

N(代表一个整数)

 宽度至少为n2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换不够以空格填充2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换

 

printf是打印一个字符串

putchar是打印一个字符

 

2.3      scanf函数与getchar函数

 

3         运算符表达式和语句

3.1      基本运算符

3.1.1         =

数据对象:泛指数据在内存的存储区域

左值:表示可以被更改的数据对象

右值:能赋给左值的量

3.1.2         +

 

3.1.3         �C

 

3.1.4         *

 

3.1.5         /

 

3.1.6         %

取模,取余数

 

3.1.7         +=

int a = 10;

a = a + 5;

可以简写成a +=5;

3.1.8         -=

a = a �C 5;a -= 5;

3.1.9         *=

a = a * 5;a *= 5;

3.1.10      /=

 

3.1.11      %=

 

3.1.12      ++

 

3.1.13      --

 

3.1.14      逗号运算符

int I = 6 + 5, 3 + 2

逗号表达式先求逗号左边的值,然后求右边的值,整个语句的值是逗号右边的值。

3.1.15      运算符优先级

优先级

运算符

结合性

1

++(后缀),--(后缀),()(调用函数),{}(语句块),.,->

从左到右

2

++(前缀)--(前缀),+(前缀),-(前缀),!(前缀),~(前缀),sizeof,*(取指针值)&(取地址),(type)(类型转化)

从右到左

3

* / %

从左到右

4

+-

从左到右

5

<< >>

从左到右

6

< > <= >=

从左到右

7

== !=

从左到右

8

&

从左到右

9

^

从左到右

10

|

从左到右

11

&&

从左到右

12

||

从左到右

13

?

从右到左

14

=,*=,%=,+=,-=,<<=,>>=,&=,|=,^=

从右到左

15

,(逗号运算符)

从左到右

 

3.2      复合语句

{}代码块

3.3      类型转化

      double d = 10.2;

     int a =d;//隐式转换

 

      int a1 = 3;

      int a2 = 2;

      double mid = (double)a1 / (double)a2;//显示的强转

     printf("mid = %f\n", mid);


本文出自 “李春利” 博客,请务必保留此出处http://990487026.blog.51cto.com/10133282/1769426