C语言学习二

这篇博客详细介绍了C语言的基础知识,包括常量变量、整型、字符型、浮点型、进制转换、数据存储(原码、反码、补码)、数值溢出、限定符以及格式化输入输出等内容。讲解了不同数据类型的定义、输出输入方法、取值范围以及补码运算的重要性。此外,还提到了字符型和浮点型的区别,以及如何进行不同进制间的转换。
摘要由CSDN通过智能技术生成

一、常量变量


二、整型

1.定义

int,short,long,long long
signed,unsigned

2.输出

  • printf()

3.输入

  • scanf()

4.大小与取值范围

  • sizeof函数
    注意signed最高位为符号位
     

 

三、字符型

  • char 存储大小为1字节(BYTE)
     

 

四、浮点型

  • float,double 精度不同,存储大小不同
     

 

五、进制

计算机中主要以补码形式存储

1.转换

  • 2、8、16进制转为10进制:权值法,N*(k^n),n从0开始(10进制的位数)
    10进制转为2、8、16进制:反序求余,10进制书除以k得到一组余数,取反后得答案

2.八四二一法则

  • 可以运用加法来快速转换2进制 10(10) = (2+8)(10) = (10+100)(2)
    三位2进制<—>一位8进制,四位2进制<—>一位16进制,二位8进制<—>一位16进制

3.二进制存小数

  • 小数部分与2相乘,不足1取0,足1取1,小数有几位就算几位2进制

如0.456:
0.456*2 = 0.912——0
0.912*2 = 1.824——1
0.824*2 = 1.648——1,与整数相反,向下取:011

4.术语(字节BYTE)

word双字节16位
dword两个双字节,32位
1b(it)
1B(yte)
1K
1M
1G
1T
1Kb
1KB
1Mb
1MB

 


 

六、数据存储

1.原码、反码、补码

  • (正数与原码相同,负数除符号位不变0变1、1变0)
    char ch = 10;(char类型1BYTE)

原码:0000 1010
反码:0000 1010
补码:0000 1010(正数三码相同)

char ch1 = -10;
原码:1000 1010
反码:1111 0101
补码:1111 0110(负数在反码的基础上加1)

2.补码:

1.统一了0的编码:0与-0
2.简化数据加减计算,将减法变加法
3.将符号位与其他位统一处理
4.两个补码相加,若最高位进位,则舍弃进位
 
例如:76 - 82
原码:0100 1100(76)
反码:0100 1100
补码:0100 1100

原码:1101 0010(82)
反码:1010 1101
补码:1010 1110
 
补码:0100 1100(76-82)
补码:1010 1110
 
补码:1111 1010(-6)
反码:1111 1001
原码:1000 0110
8bit数据最大存储127,-127补码为1000 0001

  • 字符型,最小-128 补码1000 0000 = 原码,就是-0为区间最小值-128
    类比其他数据类型int -2^31 ~ 2^31 - 1
     

 

七、数值溢出

高位丢失
 


 

八、限定符

extern
const
volatile
register

 


 

九、 格式化输入输出

1.字符串常量

  • 在内存中一段连续的char空间,以\0结尾,遇到\0就会直接结束,没遇到\0就会乱码
    一直往下找直到出现\0
char *g= "hello\0 world";
printf("%s\n", g);

%s是char *类型!!!

2.printf的附加格式

%-5d 5为限定五位(如果数字位数大于限定位数,则以数字为主),-为左对齐,默认右对齐
%05d 以0补空位,小数点也算一位
%3.1f 一共3位,1位小数

3.putchar

  • 输出字符可以是一个 变量,字符,数字(一个字节int类型),转义字符

4.scanf

  • 输入多个必须有空格或者换行(回车)间隔,如果键盘输入要和输入格式一致
char ch, ch2;
scanf("%c,ch2", &ch, &ch2);#键盘输入时也要有,
putchar(ch);
#限定输入3位,真实输入多于3位,系统自动将多出来的放到另一个输入中:a = 123456,输出a = 123
int a, b;
scanf("%3d%d")

5.getchar

  • 接受字符,只有一个!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值