博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cday03
阅读量:7242 次
发布时间:2019-06-29

本文共 2917 字,大约阅读时间需要 9 分钟。

计算机内存是有大量的字节构成的

每一个字节的大小是固定的 1字节等于8比特
任何变量一定对应一个或者多个连续的字节
在内存中有每个字节有一个地址 两个字节的地址一定不会一样
地址是从0开始逐渐递增
变量的地址是其中所有最前面字节的地址 地址越小的越靠前,越大的越靠后

数据所占空间的大小来划分数据类型

任何变量对应的字节个数一定是2的整数次方

sizeof 关键字 可以用来计算一个变量或者某种数据类型所占空间大小 以字节为单位

#include <stdio.h>
int main(){
printf("char size : %d\n",sizeof(char));
return 0;
}

#include <stdio.h>

int main(){
char ch = 0;
printf("char size : %d\n",sizeof(ch));
return 0;
}

char & unsigned char 1个字节

short & unsigned short 2个字节
int & unsigned int 4个字节
long & unsigned long 4个字节
float 4个字节
double 8个字节

sizeof 关键字的小括号里面可以写一个计算表达式,sizeof 关键字对计算结果求大小 这个表达式中对变量的修改没有效果

#include <stdio.h>
int main(){
char ch = 0;
printf("char size : %d\n",sizeof(ch));
sizeof(ch = 10);
printf("ch:%hhd\n",ch);
return 0;
}

每个字节包含8个不同的二进制位

计算机使用二进制表示所有数字 二进制中每个数位上只有0或者1两种可能

二进制和十进制只是表示数字的两种方式 任何一个数字任何时候可以用十进制的方式便是也可以用二进制的方式表示
1010 0101 =》 165

1000 0000 =》128

0010 0000 =》32
0000 0100 =》4
0000 0001 =》1

八进制

把二进制数字从右向左 每三个数位分为一组 用0到7数字来表示 就是八进制了
程序中可以使用八进制数字必须以0作为开头避免和十进制混淆

019

#include <stdio.h>

int main(){
int num = 023;
printf("num is : %d\n" , num);
return 0;
}//打印的是十进制的

#include <stdio.h>

int main(){
int num = 023;
printf("num is : 0%o\n" , num);
return 0;
}//打印的是八进制的

%o 是一个占位符 可以把整数的八进制表示形式打印

十六进制

把二进制数字从右向左每四个数位分成一组 每组用一个字符表示的结果就是十六进制
十六进制每个数位上使用0-9 a-f 表示

程序中也可以直接使用,必须在前面加上0x

#include <stdio.h>

int main(){
int num = 0x1234;
printf("num is : %d\n",num);
return 0;
}//打印的是十进制的

#include <stdio.h>

int main(){
int num = 0x1234;
printf("num is : %x\n",num);
return 0;
}//打印的是十六进制的 字母小写

#include <stdio.h>

int main(){
int num = 0x1234;
printf("num is : %X\n",num);
return 0;
}//打印的是十六进制的 字母大写

%x 是一个占位符 可以把整数的十六进制形式打印

计算机中表示数字的二进制叫做补码

非负数的补码和原码一样
负数的补码

负数的二进制是 正数的二进制取反+1

原码:一个整数,按照绝对值大小转成的二进制数 就是原码

反码:将二进制数按位取反 得到的新的二进制数就是反码
补码:反码加1就是补码

正数的补码就是他本身

负数的补码就是反码+1
0001 0000
1110 1111
1111 0000

所有符号数据的最好二进制为叫符号位

0是非负数
1是负数

整数类型之间赋值要保持二进制不变

有符号数据扩充的时候在前面补充符号位

C语言中的 + - * / %

,也可以当操作符使用
,可以把两个无关的表达式连接在一起
合并后的结果就是后一个表达式的结果
,操作的优先级非常低
#include <stdio.h>
int main(){
printf("%d",(1+2,3+4));
return 0;
}

=操作符 可以用来改变变量的内容

赋值操作符的左边必须是左值(变量)
赋值操作符的右边必须能蛋数字使用
赋值操作符的优先级低但是比逗号高
多个赋值操作符计算顺序是从右向左

双目操作符需要和两个数字联合使用

很多双面操作符可以和赋值操作符 合并 形成复合赋值操作符 += -= *= /= 也是双目操作符
符合赋值操作符中的双目操作符优先级和赋值操作符一样低

自增 自减 都是单目操作符 只能对变量进行操作

++ --
这种有前操作和后操作两种,但是在单独使用的时候不区分
#include <stdio.h>
int main(){
int num = 0;
num++;
printf("num is : %d\n",num);
num--;
printf("num is : %d\n",num);
++num;
printf("num is : %d\n",num);
--num;
printf("num is : %d\n",num);
return 0;
}
前操作的优先级很高,后操作的优先级最低
#include <stdio.h>
int main(){
int num = 0;
int num1 = num++;
printf("num is : %d ; num1 is : %d" ,num,num1);
return 0;
}
不要在一条语句中对同一个变量进行多次自增或者自减计算(结果不确定,根据编译器的不同而不同)

布尔值

true 或者 false
布尔值类型 bool 用来描述布尔值
为了使用布尔类型需要把stdbool.h 文件合并进来
布尔值在计算机内部仍然使用 整数表示 真1 假 0
#include <stdio.h>
#include <stdbool.h>

int main(){

bool flag = true;
printf("flag is : %d\n",flag);
flag = false;
printf("flag is : %d\n",flag);
return 0;
}

转载于:https://blog.51cto.com/lmdtx/2051905

你可能感兴趣的文章
事件库之Libev(一)
查看>>
使用原理视角看 Git
查看>>
jooq-codegen-maven 的配置和使用
查看>>
如何处理Tomcat日志catalina.out日志文件过大的问题
查看>>
数据质量监控工具-Apache Griffin
查看>>
支付宝担保交易接口
查看>>
Intellij Idea中运行tomcat 后报内存溢出
查看>>
打开core文件功能
查看>>
nginx重新安装模块
查看>>
13个能快速开发android的经典项目
查看>>
HTML5给Button加链接
查看>>
git操作及fatal: Authentication failed for错误解决
查看>>
cpptest学习之LayerTest
查看>>
android GOOGLE MAP应用
查看>>
我们的开源项目-2013年度开源社区线下聚会《JEECG微云快速开发平台-SAAS企业应用在线开发与微信移动应用》PPT分享...
查看>>
Java 8 新特性(1) - Lambda表达式
查看>>
curl vs Wget
查看>>
安全应急响应
查看>>
maven_常用命令大全
查看>>
Android四大组件BroadcastReceiver
查看>>