| |
|
开发:
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语言入门-关键字,整形变量,数据的输入输出 -> 正文阅读 |
|
[C++知识库]c语言入门-关键字,整形变量,数据的输入输出 |
一、整形数据 整形变量在储存单元的储存方式是按照二进制位的补码形式存放。 正数的补码反码原码相同,负数的反码:二进制的原码除了最高位的符号位不变外其它位按位取反,补码为反码+1。 当整形数据分布四个字节时,一个字节为8个比特位 5的原码:
?5的反码
?5的补码
-5的原码
最高位代表符号位: 1表示负数,0表示正数? -5的反码
-5的补码
?整形变量的符号属性 在实际应用中,有的整数数据只有正数,为了充分利用变量的取值范围,可以将变量定义为“无符号”类型。 (unsigned)无符号型,存储单元中没有符号来表示正负,只能存放不带有符号的整数。例如-1,-6等不能存放,而23可以。取值范围由0开始,比正常有符号同类型的数据范围扩大一倍。 (signed)有符号型,存储单元的最高位表示符号(0为正,1为负),我们通常使用的便是有符号类型。 说明:1.只有整形(包括字符型)数据可以加signed,unsigned来修饰。 ? 2.无符号整形数据使用“u%”来打印,“u%”表示用无符号十进制的格式来输出。
打印结果为ok sizeof()的返回值类型为无符号类型整数,在比较时,会将-1也转换为无符号类型整数,转换后的值很大。
打印结果:4294967295? ? 65535 字符和数字的不同 字符'1'和数字1的不同概念:字符’1‘在内存中以ASCII码形式存储,占据1个字节。而整数1按照补码的形式存储。 '1'=1+'0' 二、关键字 c语言有32个关键字 程序之中使用到变量,有着不同的储存形式。存储类别分为静态存储和动态存储,可以通过存储类修饰符来告诉编译器要处理哪一种类型的变量。具体有auto(自动),static(静态),register(寄存器),extern(外部)。 动态存储和静态存储:从变量的产生时间上可以分为静态存储和动态存储。有些变量在程序运行的整个过程中都存在,而有些变量在被调用函数时才会临时分布储存单元,调用结束之后该存储单元就被释放了,故而静态存储就是指程序运行分配的固定的存储方式,而动态存储则是在程序运行期间根据需要动态的分配存储空间。 1.static关键字
?结果:s使用static修饰时,输出3 4?? s使用int修饰时,输出3 3 结果分析:stctic修饰s时,第一次调用Fun()函数时,s=2+1 返回3 ,?调用第一次结束之后s=3,第二次调用Fun()函数时,由于s被static修饰,s保留了第一次调用之后的值,s=3,执行s=s+1,s=4,返回4。 没有stctic修饰s时,第一次调用Fun()函数时,s=2+1 返回3? ,调用第一次结束之后s=3,由于s没有被static修饰,s的存储空间释放,第二次调用Fun()函数时,s被重新分布空间,s=2,执行s=s+1,s=3,返回3。 2、static修饰局部变量在编译时赋初值,且只赋初值一次,再次调用时,保留上一次运行后的值,如果说没有赋初值时,静态局部变量会自动初始化为0或者'\0',其他的局部变量的值就是不确定的。
结果:使用static修饰局部变量时,没有初始化时,自动初始化为0,结果为0 使用 int修饰时,程序报错:使用了未初始化的局部变量“count” 全局变量没有初始化时,自动初始化为0,结果为0 2.static修饰全局变量 static修饰全局变量时,会使得变量的作用域限制在声明它的文件内。 ?结果:报错,无法识别的count? 分析:全局变量本身具有外部链接属性,如果使用static修饰,使得全局变量具有了内部链接属性,使得变量的作用域限制在声明它的文件内 3.static修饰函数 static修饰函数时,会使得函数的作用域限制在声明它的文件内。 应用:使用static修饰局部变量来计算阶乘。
2.auto关键字 auto是所有局部变量默认的存储类。auto关键字就是修饰一个局部变量为自动的,这意味着每次执行到定义该变量的时候,都会产生一个新的变量,重新对其初始化。 auto只能用于修饰局部变量,没有特别指定时,局部变量默认为auto修饰的局部变量,auto int a=1和int a=1 没有区别,故而auto经常被省略。 3.register关键字 一般情况下,变量(包括静态存储方式和动态存储变量)的值是存储于内存中。当程序需要用到哪一个变量时,控制器发出指令将内存之中该变量的值运送到运算器中,如果要存入数据,则由运算器将数据送到内存之中。如果说一些变量需要频繁使用,那么太浪费时间了。cpu主要是负责计算的硬件单元,为了方便运算和提高效率,一般第一步都要把数据从内存读取到cpu里,那就需要cpu具有一定的数据临时存储能力,所以现代cpu内,都集成了一组叫做寄存器的硬件,用于临时变量的保存。
?那么什么变量可以使用register呢:1、局部变量 2、不会被写入的 3、高频率被读取的? register修饰的变量不能被取地址 4.extern关键字 extern变量称为外部存储变量,extern声明了程序中的全局变量。 将另一个文件的全局变量的作用域扩展到另外一个文件 一个c程序可以由一个或者多个源程序文件组成。例如如果一个程序有两个文件,在两个文件中,都要用到同一个全局变量global,但是不能在两个文件中都定义global,但是如果这样就会报错,所以说这时候就需要extern来定义global。 ?这样就可以在一个文件中使用另外文件的全局变量。打印90。 三、数据的输入输出
1、scanf()输入a,b,c数据时,前面加上取地址符,printf()在格式符f前加了”7.2”,表示指定数据占据7列,其中小数占据2列。 2、c语言本身不提供输入输出语句,而是由c语言标准函数库提供,故而printf,scanf不是关键字。 3.scanf()在读取单个字符时,空格或者转义字符都会被读取,输入时应当连续输入
? 4,如果在格式控制字符中除了格式声明外还存在别的字符,则应该按照格式输入。 如:scanf("a=%d",&a); 输入1错误,应该输入a=1。 5.输入数值数据时,如果说输入空格,Tab键或者非法字符,认为该数据输入结束,如有需要,接下来继续输入,直到遇到enter键停止读入。
? 输入a空格1空格c后,"%c"读取了字符a,"%d"不会读取空格,读取了1,”%c"读取了空格,字符c不会被读取。
?输入:qwer qwe? ? 打印:qwer? ? ? ? ? ? 分析:scanf()遇到空格停止读取,所以说scanf()不可以输入包含有空格的字符串,需要使用gets()。?
1 putchar()字符输出函数:输出一个字符 ?2.getchar()字符输入函数:输入一个字符
getchar()可以读取转义字符
读取输入的数字长度 分析:输入11 2 打印2 输入11后,输入空格,scanf读入11,遇到空格停止读入,缓冲区留空格字符,getchar()先读取缓冲区字符空格,i=1,循环继续 输入2后,输入换行,scanf读入2后停止读入,缓冲区留下换行字符,getchar()先读取缓冲区字符,i=2循环停止
1、puts()输出字符串 2、gets()输入字符串
puts()会在字符串中找到'\0',遇到'\0'打印字符串并换行。没有结束标志时,编译器会自动在字符串末端添加'\0'
输入ab c,打印ab c并换行? ? ??puts()可以输出空格并换行 gets()可以读取空格,遇到enter键结束。 |
|
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图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/7 23:46:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |