C语言笔记

在这里插入图片描述

整数 : (short int long (long long))
signed 有符号数
unsigned 无符号数

字符型 : char

bool类型 :
类型名称 值 域
bool 非零(true), 零(false)

bool (不是基本数据类型 ??)需要引入包 #include<stdbool.h> _Bool为基本数据类型
if(-1) 这个判断的结果为 if(true) 非零为true
bool a = -1 ;
if(a){
printf("%d\n",a) //打印出来的确是1 ,因为<stdbool.h>true为1非零
}

gcc -E bool.c -o bool.i (文件预处理 并输出到bool.i文件, vi bool.i打开该文件)
stdio.h所在目录
在这里插入图片描述
我们的头文件所在目录
在这里插入图片描述
C99才引入的新的数据类型_Bool 布尔值 原生bool 为 _Bool
我们去根据这个路径打开这个头文件看33行
在这里插入图片描述
如果你的代码当中想用到 true 和 false 那就需要引入 <stdbool.h>
如果你的代码中不想用到true和false 那就用 _Bool就可以不用引入头文件
例如: _Bool a;
有些类型受系统的影响值也会受影响 , 比如 : long
以下是以 32位操作系统为例的数据

类型名称长度(字节)值 域
char1-128~127 或 (0~255使用/J编译选项)
signed char1-128~127
unsigned char10~255
 - 128需要特殊记忆 补码在内存当中为 1000 0000

补码(two’s complement) 1、在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 2、补码与原码的转换过程几乎是相同的。

short类型(32位操作系统)

类型名称长度(字节)值 域
short(signed short)2-32768~32767
unsigned short)20~65535

int类型(32位操作系统)

类型名称长度(字节)值 域
int(signed int)4-2147483648~2147483647
unsigned int)40~4294967295
#include<stdio.h>
int main(int argc, char *argv[])
{
	printf("%d  %d  %d  %d",sizeof(_Bool),sizeof(char),sizeof(short),sizeof(int));
	return 0;
}

<limits.h> 各种类型的数值范围 引用包
vi /usr/include/limits.h
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
我们可以用代码编写输出一下
在这里插入图片描述
在这里插入图片描述
数值第一位 为0代表是 八进制数
数值第一位 为0x代表是 十六进制数
注意 :常量赋值的时候一般没有二进制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
%c是输出字符的值
%d 十进制数 %x十六进制数 %o八进制数
%f 表示按浮点数的格式输出 %e 表示按指数形式的浮点数的格式输出 %g 表示自动选择合适的表示法输出
在这里插入图片描述
单引号引起来的内容一定是一个符号 , 哪些字符可以用单引号引起来得查ASCII码表
在C语言中 , 字符常量具有数值. 字符常量的值 就是字符的ASCII码值
可以把字符常量看做一个字节的正整数
在这里插入图片描述
大写转小写 + 空格 也就是 +32
小写转大写 - 空格 也就是 -32
在ASCII表中字符 ‘0’ 的十进制数为 48
如果字符’0’ 想转成真正的数字0 如下
int a = ‘0’ - 48;
任意数字字符想转成真正数字 就是 -48
同理如果数字1-9想转成字符 就是+48
在这里插入图片描述
在这里插入图片描述
char arr[4] = {“abc”}; == char arr1[4] = {‘a’,‘b’,‘c’,’\0’}; 这两个数组是等价的
char arr[] = {“abc”}; 如果不写数组的个数, 默认是以后面赋值的总个数. 默认或有 ‘\0’
字符串是以 \0结尾 , “5” 是由 ‘5’ , ‘\0’ 组成的
sizeof(arr) 是获取这个数组的长度
%s是 打印字符串
在这里插入图片描述

在这里插入图片描述
如果我在代码当中很多地方 用到了3.1415926 我们可以定义诶PI来代表
还有一个好处就是如果 我感觉 3.1415926还不够精确需要改一下, 只需要改PI的值就可以
在这里插入图片描述
标识常量在运算的时候 会展开, 它只是作为数值替换
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
宏的语用一般后面都是一些复杂的式子, 如果你不想让它展开就加( ) 能加括号的地方都要加( )
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
scanf("%f ",&n); 用户通过手动输入字符到控制台
在这里插入图片描述
变量名由字母 , 数字 , 下划线组成, 不能以数字开头 , 不能和C的关键字重名 .
在程序运行时 , 变量占据存储空间的大小由其数据类型决定 .
变量在内存空间中的首地址 , 称为变量的地址 .(你要是想知道变量放到了内存中的什么地方)
在这里插入图片描述
存储类型有四种
默认的auto 局部变量

在这里插入图片描述
在函数体的某程序段内说明auto存储类型的变量
在这里插入图片描述
如果你不给变量赋值,那么它的值就是随机的(类似与java中方法里的变量)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
%P 内存当中的地址在这里插入图片描述
在这里插入图片描述
static 可以是全局变量,也可以是局部变量 ,值默认是0
在这里插入图片描述
a每次都是1 ,因为int a 在不断初始化
在这里插入图片描述
在这里插入图片描述
static 每次不用初始化了 ,
只要程序没有结束,它就不会被销毁 ,
在内存中以固定地址存放的,而不是以堆和栈的形式存放的
在这里插入图片描述
函数体外的意思就是全局变量 ,全局变量是能被其他文件访问的
在这里插入图片描述
:vsp 加文件名 可以进行分屏显示
另一个文件只需要int global_a = 101; 不需要main方法,不需要引用包
在这里插入图片描述
当你想使用别的文件的全局变量的时候可以加extern
在这里插入图片描述
static修饰一个全局变量 ,其他文件无法使用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
~ 意思是二进制数取反, 0 变 1 , 1 变 0
%x输出16进制数 %#x 这里#号意思是自动增加0x前缀 %o 输出8进制数
在这里插入图片描述
在这里插入图片描述
16进制数 一个数对应4个进制位 8进制数 一个数对应3个进制位
在这里插入图片描述
在这里插入图片描述
相异为真 true 非零 相同为假 false 为零
在这里插入图片描述
1<<2
1的二进制为 0000 0001 左移2位 0000 0100. 如果再转成10进制就是4。

在这里插入图片描述
在这里插入图片描述
如果 值++ 在做判断语句的时候 是先拿出值来做对比, 然后在进行值++

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
逗号运算符的执行顺序是从左到右.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
cat 文件名 意思是显示文件内容

x++ 和 ++x 如果遇到判断 x++ 是先拿x判断再进行++ , ++x是先++后判断
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
m这个8d和2d 8指输出数据的宽度 ,如果位数够就正常打印,不够用空格补录 ,如果写成
%-8d意思是在数的后面
.n是小数点的精度 , 默认输出小数点位数为六位
在这里插入图片描述
在这里插入图片描述
08d 意思是之前是补空格,现在是补零
在这里插入图片描述
在这里插入图片描述

ctrl + d 返回值为-1 结束键盘输入
在这里插入图片描述
scanf
在这里插入图片描述
在这里插入图片描述
不能再scanf中写提示语句,那样的话只能自己提示自己,需要自己手动敲please inpt:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一个变量值为1 , 如果你的变量是int ,而你输入的是字母 那得到的就是0
在这里插入图片描述
在这里插入图片描述
%ld %hd
在这里插入图片描述
*号的值是扔掉的不会赋值给变量
在这里插入图片描述
两种格式的区别
在这里插入图片描述
这里的c1 c2 c3是变量名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
输入int值x 回车, 紧接着再输入char 值 a 那么能不能正确的赋值给 x和ch???
输入int值后回车, 留下了垃圾符号回车影响了char 值a的赋值 ? 如何去回收这个垃圾符号呢 ?
在这里插入图片描述
在这里插入图片描述
getchar(); 把回车获取到, 不影响底下的输入赋值
在这里插入图片描述
这种方法比上面的getchar()要方便的多., 直接在输入前加空格 或者%*c就行
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
输入打印字符串方法 ,为什么会报异常 , 因为我们的给定的数组长度是有限的, 如果用户输出超出我们定义的长度就会报错 , 会造成栈溢出 ,如果你定义的是5个字符,那么你最多能输入 4个, 因为字符数组默认是以 \0作为结束标志的 , scanf()输入的时候如果输入空格,那么字符串会以空格为截至符,. 之后输出的都不显示 ,如果想用scanf()把空格也赋值,能用用%c循环一个一个赋值 , gets不会以空格作为字符串的结束标志
在这里插入图片描述
这个puts输出完后会自动换行 , 里面可以存空格
在这里插入图片描述

在这里插入图片描述
开根号 ,sqrt 需要头文件在这里插入图片描述编译的时候加上
gcc -lm 相当于一个链接选项

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值