【笔记】- 蒟蒻学习C/C++的一点点笔记(注意的点)

本文是关于C/C++编程的学习笔记,涵盖了数据类型、运算符、输入输出、循环语句、数组、函数、指针、结构、标准库函数等方面的基本知识和常见陷阱,包括变量初始化、整型溢出、位运算、三目运算符的使用、输入输出格式控制、数组越界、函数调用、指针的指针等概念,适合C/C++初学者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C/C++中的一点点笔记(注意的点)

数据类型

  1. 两个整数相除 得到的还是整数;
    只要有一个浮点数,结果就是浮点数
    例如:
3 / 2 = 1;
3.0 / 2 = 1.5;
  1. 在C语言中在不同位置定义不同的int变量如果没有对其进行初始化其默认值是不同的:
    定义全局int变量未初始化其值默认是0;
    定义局部静态int变量未初始化其默认值是0;
    定义全局结构体中int未初始化其值默认也是0;
    定义局部非静态未初始化其默认值是不确定的;
    定义局部结构体中int未初始化其值也是不确定的。
    具体说明可参见下述截图
    在这里插入图片描述
    可以参见原博客:http://blog.youkuaiyun.com/east5683/article/details/22960573
  2. 变量定义在这个变量被调用的最近的地方。
  3. 各种数据类型的取值范围
    总结如下:
类型 位数(字节数) 有效数字 数值范围
bool 1个字节 0/1
BOOL 4个字节 TRUE/FALSE/ERROR
char 1个字节 -128~127
unsigned char 1个字节 0~255
short 2个字节 -32768~32767
unsigned short 2个字节 0~65535
int 4个字节 -2147483648~2147483647
unsigned int 4个字节 0~4294967295
long 4个字节 -2147483648~2147483647
unsigned long 4个字节 0~4294967295
long long 8个字节 -9223372036854775808~9223372036854775807
unsigned long long 8个字节 0~18446744073709551615
float 32(4) 6~7位 -3.41038 ~ +3.41038
double 64(8) 15~16位 -1.710-308 ~ 1.710308
long double 96(12) 18~19位 -1.210-4932 ~ 1.2104932
指针 4个字节
  1. 关于整型溢出,以short为例:
    short a = 32769;
    输出会变成-32787
    整型溢出
  2. 强制类型转换int的结果只保留整数部分,不是四舍五入。
int(3.14) = 3int(3.58) = 3;
  1. 整数相除也是只保留整数部分。
  2. 指定保留多少位有效数字或指定小数点后保留多少位的时候,是四舍五入的。
float a = 3.14;
printf("%.1f",a) //输出3.1
float a = 3.58;
printf("%.1f",a) //输出3.6
  1. 前缀标识进制、后缀标识类型。例如:013 + 12 = 23
  • 前缀什么都没有是十进制
  • 0开头是八进制
  • 0x开头是十六进制
  1. 字符在计算机中是以ASCII的形式存在的,转义字符特别留意。例如:'\61'这个字符是'1''\x61'这个字符是'a'
    棒!
  • '\66'这个表示某个字符的八进制
  • '\x66'表示f这个字符的十六进制
    来看几道易错的例题
    “abcdef”占7字节,长度为6。分析:f后面有一个结束字符\0,也要算做一个字节
    “abcdef\0ghij\0k” 占15字节,长度为6。分析:\0是结束字符,长度就到了\0前
    "abc\101123"占8字节,长度为7。分析:\101是一个字符,表示101的八进制数所代表的字符
    "abc\1681123"占10字节,长度为9。分析:\16是一个字符,8不符合八进制,所以不是\168是一个字符
    "abc\012345"占8字节,长度为7。分析:优先考虑是否为八进制数,再看是不是\0结束字符
  1. 	- 12L   :  (long)
    	- 12LL  :  (long long)
    	- 12U   :  (unsigned int)
    	- 12ULL :  (unsigned long long)
    	- 12    : (int)十进制正整数
    	- -12   : (int)十进制负整数
    	- 0x12	: (int)十六进制整数
    	- 012   : (int)八进制整数
    	- 3.14L : (long double)
    	- 3.14F : (float)
    	- 3.14 : (double)
    	- 3.   : (double) 3.0
    	- .34  : (double) 0.34
    	- 1.23E-2 : (double)1.23 * 10 ^ -2 = 0.0123
    	- 1e-6 : (double) 1*10^-6 = 0.000001
    	- '\n' : 换行符
    	- '\t' : 制表符
    	- '\'' : 单引号 '
    	- '\"' : 双引号 "
    	- '\r' : 回车符
    	- '\a' : 响铃符
    

棒!
13. 数据一旦出现了,它的类型就定了(包括变量和字面值)
14. 浮点数无法精确存储(有浮点误差)
15. float仅能在6~7位数尽量保证精度,6位肯定能保证,7位保证一部分(这个位数是指几位的数不是小数点后的几位)

#include <stdio.h>
int main(void)
{
   
    float a = 2.45;
    float
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值