您的位置:首页 > 编程语言 > C语言/C++

1118关于C语言中内存计算,和一些运算符以及scanf和printf运行机制

2017-11-24 18:50 295 查看
推荐用书:C语言 谭浩强 (薄本)

 

gcc 预编译、编译、汇编、链接

-E -o |-S  -o | -c -o | -o

生成  .i   |  .s   | .o  | a.out

汇编的最终目的:生成二进制文件

链接的最终目的:生成可执行文件

 

在位系统中数据类型在内存中所占的相应字节:

int 4B

float 4B

double 8B

char 1B

每个类型都有自身所占的位数,每个类型都有相应的数的表示范围,

同时每个类型分为无符号数和有符号数,有无符号数的表示范围不同

测数据类型的长度: sizeof()

 

以int和unsigned int为例进行数据类型所能表示相应数据长度的推导:

unsigned int   __________|__________|_

     0         2的32次方减一

二者之间的长度为2的32次方

int           ____|______|.______|_______

负2的31次方-1  0    2的31次方

二者之间的长度为2的32次方

unsigned int的范围: 0~2的32次方减一

int的范围       
:负2的32次方~ 2的32次方减一

 

有符号数和无符号数的计算(int
和 unsigned int)

1.int类型的输出占位符为:%d

 unsigned int的输出占位符为: %u

2.定义一个数并且给他赋值后不能输出的可能原因:可能是赋的值太大了,超出了该类型的表示范围

3.数值类型决定了变量的范围

数据名字确定了首地址

(计算机中地址是连续的,我们的地址分配在定义变量的时候就已经分配了)

4.若int和unsigned int两个类型的数值进行运算,默认的计算类型为unsigned
int

(因为unsigned int的精度比int的精度大)

 输出时占位符为%d则用类型int计算,

输出时占位符为%u则用unsigned int进行计算

 

若在定义变量时: int a;

printf(“%d\n”,a);  会发现输出的结果是一堆系统随机分配的数字

 

 

char的编码方式:ASCII

char   ——   ASCII

97 a

65 A

 

char类型的表示范围:-128~127

unsigned char:   0~255

 

转义字符:\n  \’   \”

 

字符赋值的方法:’ ‘ 

字符的占位符: %c

字符串的占位符:%s

‘\0’ 作为字符串的结束标志

“China”  占6个字符的内存大小,但是\0并不输出

 

混合运算:由低到高:char
、short -> int ->unsigned int -> long -> double

 

float类型的占位符:%f

若控制输出小数点后几位: %.nf

 

运算符:

算数运算符: +  -  *  /

关系运算符:>  <  ==  >=  <=  !=  

逻辑运算符:!  &&(与)  ||

位运算符:<<  >>  ~  |  ^  &(与乘)

赋值运算符:=及其扩展赋值运算符

条件运算符:?:(三目运算符)

逗号运算符:( , )

指针运算符:*和&

 

关于++和--

1.++在右边时,先赋值再运算: int a=3,b;

b=a++;(此时b=4,a=3)

2.++在左边时,先运算再赋值:int a=3,c;

c=++a;(此时c=4,a=4)

 

scanf:我们在用scanf输入时,一定要跟着scanf的格式走

printf和scanf的运行机制:

printf:输出时使用,表示输出一个数值

scanf:输入时使用,&,表示取输入一个值得这个地址

 

 

 

布尔类型(bool):这个变量只有两个值0和1

在C语言中,使用bool要有相应的头文件:stdbool.h

 

= 赋值

== 比目运算符  if(只能用==)

 

 

if: if...else

for:for( ; ; )

while:先判断再执行

do...while:先执行再判断

 

宏定义: #define
一些大写字母 数字

eg: #define MAX 10

使用gcc编译时,宏定义在预处理的时候被处理

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言