码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-05-02 17:14:59      阅读:428      评论:0      收藏:0      [点我收藏+]

标签:常量:#define const 字符串常量 1 8 10 16 进制转换 sizeof关键字 变量 int folat char 类型限定 const volatile register 输入输出 printf scanf 运算符 = + - * / % += -= *= /= %= ++ --   运算符优先级 代码块{} 类型转换   


 

常量:#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这个数,


技术分享

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      十进制,二进制,八进制,十六进制


技术分享

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,是小端对齐的

技术分享


技术分享


 



 

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类型变量,每一步都需要从内存当中读取。


技术分享

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

将输出的前面补上0技术分享直到占满指定列宽为止技术分享不可以搭配使用技术分享-技术分享技术分享

N(代表一个整数)

 宽度至少为n技术分享不够以空格填充技术分享

 

printf是打印一个字符串

putchar是打印一个字符

 

2.3      scanf函数与getchar函数

 

3         运算符表达式和语句

3.1      基本运算符

3.1.1         =

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

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

右值:能赋给左值的量

3.1.2         +

 

3.1.3         

 

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 – 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

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

标签:常量:#define const 字符串常量 1 8 10 16 进制转换 sizeof关键字 变量 int folat char 类型限定 const volatile register 输入输出 printf scanf 运算符 = + - * / % += -= *= /= %= ++ --   运算符优先级 代码块{} 类型转换   

原文地址:http://990487026.blog.51cto.com/10133282/1769426

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!