| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C Primer Plus 学习笔记 -> 正文阅读 |
|
[C++知识库]C Primer Plus 学习笔记 |
1 当printf()使用%c打印336时, 它只会查看储存336的2字节中的后1字节,这种截断(见图4.8)相当于用一 个整数除以256,只保留其余数。以为%c取值为无符号数,故不需要进行关于正负号的改变 #2: #include <stdio.h> return 0; 输出结果为? 65565462,0,54152,由此可以证明 1:在初始化一个变量的第一步是格式化这个内存空间 2:printf函数实现输出是先以“”将外的变量在内存中排序,然后再以转换说明依次读取相应大小的空间进行输出 #3:printf()函数也有一个返回值,它返回打印字符的个数,注意计算针对所有字符数,包括空格和不可见的换行符(\n)。如果有输出错误, printf()则返回一个负值 #4:连接两个字符串可以使用两个” “,如”young “? “girl”等价于"young girl" #5:scanf()把输入的字符串转换成整数、浮点数、字符或字符串,而 printf()正好与它相反,把整数、浮点数、字符和字符串转换成显示在屏幕上 的文本。 #6:scanf()函数返回成功读取的项数。如果没有读取任何项,且需要读取一 个数字而用户却输入一个非数值字符串,scanf()便返回0。当scanf()检测 到“文件结尾”时,会返回EOF #7:*在printf中的作用? 如:printf("%*.*f",(参数一),(参数二),(参数三)),其中参数一二是对*所代表的数进行修饰,即控制字宽和精度。scanf()中*的用法与此不同。把*放在%和转换字符之间时,会使得 scanf()跳过相应的输出项 #include int main(void) { int n; printf("Please enter three integers:\n"); scanf("%*d %*d %d", &n); printf("The last integer was %d\n", n); return 0; } scanf()跳过两个整数,把第3个整数拷贝给n。 下面是一个运行示例: Please enter three integers: 2013 2014 2015? ? ?//用户输入 ?The last integer was 2015? ? //在程序需要读取文件中特定列的内容时,这项跳过功能很有用 #8:,C 的标准数学库提供了一个pow()函数用于指数运算,例如,pow(3.5, 2.2)返回3.5的2.2次幂)。 #9:注意,整数除法会截断计算结果的小数部分(丢弃整个小数部分),不 会四舍五入结果。混合整数和浮点数计算的结果是浮点数 #10:在C99中:如果第1个运算对象是负数,那么求模的结 果为负数;如果第1个运算对象是正数,那么求模的结果也是正数??例如: 11 / 5得2,11 % 5得1 ????????11 / -5得-2,11 % -2得1???????? -11 / -5得2,-11 % -5得-1???????? -11 / 5得-2,-11 % 5得-1 如果当前系统不支持C99标准,会显示不同的结果。实际上,标准规 定:无论何种情况,只要a和b都是整数值,便可通过a - (a/b)*b来计算a%b。 #11:如果一个变量出现在一个函数的多个参数中,不要对该变量使用递增或 递减运算符; 如果一个变量多次出现在一个表达式中,不要对该变量使用递增或递减 运算符。 #12:有赋值运算符(=)的表达式的值,这些表达式的值与赋值运算符左侧变量的值相同。因此,表达式q = 5*2 作为一个整体的值是10。 #13:序列点(sequence point)是程序执行的点,在该点上,所有的副作用都 在进入下一步之前发生。在 C语言中,语句中的分号标记了一个序列点。另外,任何一个完整表达式的结束也是一个序列点。什么是完整表达式?所谓完整表达式(full expression),就是指这个表达式不是另一更大表达式的子表达式。例如,表达式语句中的表达式和 while循环中的作为测试条件的表达式,都是完整表达式 #14:.在赋值表达式语句中,计算的最终结果会被转换成被赋值变量的类型。 #15:在C语言中,许多类型转换都是自动进行的。当char和short类型出现在 表达式里或作为函数的参数(函数原型除外)时,都会被升级为int类型; float类型在函数参数中时,会被升级为double类型。在K&R C(不是ANSI C)下,表达式中的float也会被升级为double类型。当把一种类型的值赋给 另一种类型的变量时,值将被转换成与变量的类型相同。当把较大类型转换 成较小类型时(如,long转换成short,或 double 转换成 float),可能会丢失 数据。根据本章介绍的规则,在混合类型的运算中,较小类型会被转换成较 大类型。 定义带一个参数的函数时,便在函数定义中声明了一个变量,或称为形 式参数。然后,在函数调用中传入的值会被赋给这个变量。这样,在函数中 就可以使用该值了。 #16:关系运算符的优先级比算术运算符(包括+和-)低,比赋值运算符高。关系运算符之间有两种不同的优先级。 高优先级组:>= 低优先级组: ==? != 。关系运算符的结合律也是从左往右。 #17:逗号运算符并不局限于在for循环中使用,但是这是它最常用的地方。 逗号运算符有两个其他性质。首先,它保证了被它分隔的表达式从左往右求 值(换言之,逗号是一个序列点,所以逗号左侧项的所有副作用都在程序执 行逗号右侧项之前发生)。整个逗号表达式的值是右侧项的值 #18: #19:!运算符的优先级很高,比乘法运算符还高,与递增运算符的优先级相 同,只比圆括号的优先级低。&&运算符的优先级比||运算符高,但是两者的 优先级都比关系运算符低,比赋值运算符高。C保证逻辑表达式的求值顺序是 从左往右。&&和||运算符都是序列点,所以程序在从一个运算对象执行到下 一个运算对象之前,所有的副作用都会生效。而且,C 保证一旦发现某个元 素让整个表达式无效,便立即停止求值。正是由于有这些规定,才能写出这 样结构的代码: while ((c = getchar()) != ' ' && c != '\n') #20:?条件运算符需要3个运算对象,每个运算对象都是一个表达式。其通用 形式如下: expression1 ? expression2 : expression3 如果expression1为真,整个条件表达式的值是expression2的值;否则, 是expression3的值。 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/24 11:56:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |