IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 2021-09-18 -> 正文阅读

[C++知识库]2021-09-18

c程序设置语言

注意1: 在c语言中,有算术的地方应该注意类型。不是什么 3/2 都是等于1 的。

如 double x, y; x = 1; y = x + 3/2 ; 结果y = 2.000000; 万万没想到把。
解说:x会转换为double类型,则会是1.0
解说:3/2 = 1的, 因为 3 2 都是int 类型,所以 3/2 也是取整数部分,后尾部分舍去。
解说:所以 y = x + 3 / 2 ; => 1.0 + 1.0 = 2.0

注意2:若a为int类型,且其值为3,则执行完表达式a+=a-=a*a; ==> 结果为 -12
注意3:字符常量与字符串常量

字符常量 和 字符串常量都是常量,是不可以改变的。
‘A’ 单引号的是字符常量
“A” 双引号的是字符串常量
‘A’, ‘a’, ‘0’, ‘*’, \t \n 这些都属于字符常量

字符常量注意事项

字符常量只能用单引号’ '括起来
字符常量只能是单个字符
字符可以是字符集中的任意字符,但数字被定义为字符型之后就以ASCLL码值参与数值运算
如’6’的ASCLL码值为54,与数字6不同的。

字符串常量注意事项

字符常量使用双引号" "括起来的
例如:“China”, “10001”, “**”, “A”, “”, “\n”
""表示什么字符也没有
"\n"表示一个转义字符换行

字符常量和字符串常量存储

字符常量存储是没有结束标记的如:A
字符常量存储是存储一个的ASCLL码值。
字符串常量存储时有结束标记的如:A \0
字符串常量存储时存储每一个字符的ASCLL值以外,还要存放结束标志\0字符,所以长度+1

注意3:输出printf()注意事项

printf()输出的时先从右边开始运算的
int x=10; int y=x++;printf("%d, %d \n", (x++, y), y++ );
分析:应为时从右边开始运算的,则y++,值是y=10 后再加++。
分析:所以到了 (x++, y)的时候y就等于11了。都好运算符都前面为真然后取后面的。
分析:所以答案是:11,10

注意4:输出格式

%d,%i : 以带符号的十进制形式输出整数(正数不输出符号)
%o: 以八进制无符号形式输出整数(不输出前导符号0)
%x,X:以十六进制无符号形式输出整数(不输出前导符号0x),用x则输出十六进制数的a~f时以小写的形式输出,用X时,则以大写字母输出
%u: 以无符号十进制形式输出整数
%c:以字符形式输出,只输出一个字符
%s:输出字符串
%f: 以小数形式输出单,双精度数,隐含输出6位小数
%e,E :以指数形式输出实数,用e时指数以e表示(如:1.2e + 02),用E时指数以E表示(如:1.2E + 02)
%g,G: 选用%f,%e格式钟输出宽度较短的一种格式,不输出无意义的0,用G时,若指

注意五:优先级

赋值运算符<逻辑与运算符<关系运算符<算术运算符

进制转换

注意六:位运算

位运算概念:从现代计算机中所有的数据二进制的形式存储在设备中。即0、1两种状态,计算机对二进制数据进行的运算(+、-、*、/)都是叫位运算,即将符号位共同参与运算的运算。

例如:
int a = 35; int b = 47; int c = a + b;

计算两个数的和,因为在计算机中都是以二进制来进行运算,所以上面我们所给的int变量会在机器内部先转换为二进制在进行相加:

35: 0 0 1 0 0 0 1 1
47: 0 0 1 0 1 1 1 1
————————————————————
82: 0 1 0 1 0 0 1 0

位运算
符号 描述 运算规则
& 与 两个位都为1时,结果才为1
l 或 两个位都为0时,结果才为0
^ 异或 两个为相同为0,相异为1
~ 取反 0变1, 1变0
<< 左移 各二进位全部左移若干位,高位丢弃,低位补0

右移 各二进位全部右移若干位,对无符号数,低位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)

左移 右移好抽象呀!!!!

1&3&5&7 结果位1

步骤:将上面数字转为二进制,然后将其对比
1:0001
3:0011
5:0101
7:0111
————
end:0001

1&3&5&7 结果位7

1:0001
3:0011
5:0101
7:0111
————
end:0111

异或

135^7 结果位0

1:0001
3:0011
5:0101
7:0111
————
end:0000

左移

2 << 1 => 2往左移一个单位
2: 0010 => 移动后:0100
0100 = 十进制的形式为:02^3 + 1 2^2 + 0 2^1 + 0 2^0 => 4

左移中的^我是当作多少次方来算了,不要看作异或

妙用

12345,12345/100的值为123,即百位数以上(含百位数)的数;12345%100的值为45,即百位数以下(不含百位数)的数。

程序分析

有以下程序
main()
{ int i;
for(i=0;i<3;i++)
switch(i)
{ case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
}
}
执行后输出结果是
1.当switch表达式i=0的时候,查找case常量为0的语句,如果没有找到,则执行default语句,如果没有default则什么都不执行。则输出 0
2.当switch表达式i=1的时候,查找case常量为1的语句,则如上找到了sase常量为1的语句,然而,执行完case常量为1的语句后,后面没有break终止当前的寻找(没有跳出),继续往下执行,然后执行case常量为2的语句,和default的语句,则第二部i=1的时候输出 111
3.当switch表达式i=2的时候,查找case常量为2的语句,则按照上面步骤,因为没有break终止当前循环,则会 执行 case2 和default语句,则输出22
A) 011122
B) 012

C) 012020
D) 120

[A] 教师批改:A

注意7: 终止循环break与结束循环continue

break提前终止循环:结束当前的循环,执行下一个语句。【break其作用是使流程跳到循环体之外,接着执行循环体下面的语句】

continuet提前结束本次循环:有时并不希望终止整个循环的操作,只希望提前结束本次循环,接着执行下次循环。

程序分析

main()
{
int a=0,i;
for(i=0;i<5;i++)
{
switch(i)
{
case 0:
case 3: a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
}
printf("%d\n",a); // a=41
}
I= 0 , a=2 a=5 , a=10
I=1, a=13, a = 18
I=2, a=21, a=26
I=3, a=28,a=31, a=36
I=4,a=41,

程序分析

int main(){

int x = 10, y = 10, i;
for(i = 0 ; x > 8 ; y=++i){
	printf("%d, %d \n", x--, y);
}


return 0;

}
A) 10 1 9 2 B) 9 8 7 6
C) 10 9 9 0 D) 10 10 9 1

大意题,我选择了a,没有考虑到for中第三个语句是最后执行的 y=++i, 真正答案选D

注意8:

语句while(!e);中的条件!e等价于 ( ) A) e==0 B)e!=1 C) =0 D) 运行时出错

!是逻辑非操作符,即按位取反,C语言中认为所有非零数都是真,所有零都是假
!e等价于e==0,所以答案为A

注意9:while运算

int main(){

 int n = 0 ;
 while(n++<=2);
 printf("%d\n", n); // 4
 
//第一:0 <= 2, n = 1
//第二: 1 <= 2, n = 2
//第三: 2 <= 2, n= 3,
//第四: 3 <= 2, false 了但是n还是会++; 所以尽量避免在while中写表达式
return 0;

}

注意9:while( 表达式运算 )

防止出错,一定需要仔细分析每个过程。

#include <stdio.h>
int main(){

int a = 1, b = 2, c = 2, t;
while(a < b < c){
	t = a;
	a = b;
	b = t;
	c--;
}
//第一次 a < b = true , true < c = true
// t = 1,
// a = 2,
// b = 1,
// c = 1,
//第二次 a < b = false, false < c = true
// t = 2,
// a = 1,
// b = 2, 
// c = 0,
//第三次 a < b = true , true < 0 = false

printf("%d, %d, %d \n", a , b , c); // 1, 2, 0
 
return 0;

}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-19 07:48:45  更:2021-09-19 07:50:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 23:20:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码