首页 > 其他分享 >c语言数据类型和变量(下)

c语言数据类型和变量(下)

时间:2024-09-27 15:50:52浏览次数:3  
标签:输出 变量 浮点数 数据类型 占位 printf scanf 语言

2,变量

C语⾔中把经常变化的值称为变量,不变的值称为常量。

创建变量的语法形式:data_type name;

 | |

| |

数据类型 变量名

变量在创建的时候就给⼀个初始值,就叫初始化。

int age = 18;

char ch = 'w';

double weight = 48.0;

unsigned int height = 100;

2.2变量的分类

• 全局变量:在⼤括号外部定义的变量就是全局变量

全局变量的使⽤范围更⼴,整个⼯程中想使⽤,都是有办法使⽤的

• 局部变量:在⼤括号内部定义的变量就是局部变量

局部变量的使⽤范围是⽐较局限,只能在⾃⼰所在的局部范围内使⽤的。

Tips:当全局变量和局部变量同时存在,优先使用局部变量

补充:关于内存的储存的区域

⼀般我们在学习C/C++语⾔的时候,我们会关注

内存中的三个区域:栈区、堆区、静态区。

1. 局部变量是放在内存的栈区

2. 全局变量是放在内存的静态区

3. 堆区是⽤来动态内存管理的(后期会介绍)

3.算术操作符:+、-、*、/、%

3.1:+,- 加减  3.2*乘 (记住就行,不解释了)

3.3 /(取整)为整数除法

Tips:#include <stdio.h>

int main()

{

 float x = 6 / 4;

 int y = 6 / 4;

 printf("%f\n", x); // 输出 1.000000

 printf("%d\n", y); // 输出 1

 return 0;

}

上⾯⽰例中,尽管变量 x 的类型是 float (浮点数),但是 6 / 4 得到的结果是 1.0 ,⽽不是

1.5 。原因就在于C语⾔⾥⾯的整数除法是整除,只会返回整数部分,丢弃⼩数部分。

如果希望得到浮点数的结果,两个运算数必须⾄少有⼀个浮点数,这时C语⾔就会进⾏浮点数除法(比如6.0/4)

3.4%(取余)这个运算符只能⽤于整数,不能⽤于浮点数。

负数求模的规则是,结果的正负号由第⼀个运算数的正负号决定。

4赋值操作符:=和复合赋值

在变量创建的时候给⼀个初始值叫初始化,在变量创建好后,再给⼀个值,这叫赋值

赋值操作符 = 是⼀个随时可以给变量赋值的操作符。

4.1复合赋值符

+=  -=

*=  /=  %=

>>=  <<=

&=  |=  ^=

5单⽬操作符:++、--、+、-

前⾯介绍的操作符都是双⽬操作符,有2个操作数的。C语⾔中还有⼀些操作符只有⼀个操作数,被称为单⽬操作符。 ++、--、+(正)、-(负) 就是单⽬操作符的

5.1++和--

++是⼀种⾃增的操作符,⼜分为前置++和后置++,--是⼀种⾃减的操作符,也分为前置--和后置--.

前置++:先++,再使用 后置++:先使用,再++  --同理(应该挺好记忆的,哪个在前就先做哪个)

6. 强制类型转换

int a = (int)3.14;很少用

7.printf和scanf

7.1printf

printf() 的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的 f 代表 format (格式化),表⽰可以

定制输出⽂本的格式。

printf() 不会在⾏尾⾃动添加换⾏符,运⾏结束后,光标就停留在输出结束的地⽅,不会⾃动换

⾏。

为了让光标移到下⼀⾏的开头,可以在输出⽂本的结尾,添加⼀个换⾏符 \n 。

printf() 是在标准库的头⽂件 stdio.h 定义的。使⽤这个函数之前,必须在源码⽂件头部引⼊这

个头⽂件。

7.1.2占位符

所谓“占位符”,就是这个位置可以⽤其他值代⼊。

占位符的第⼀个字符⼀律为百分号 % ,第⼆个字符表⽰占位符的类型, %d 表⽰这⾥代⼊的值必须是⼀个整数。

常⽤的占位符除了 %d ,还有 %s 表⽰代⼊的是字符串

printf() 参数与占位符是⼀⼀对应关系,如果有 n 个占位符, printf() 的参数就应该有 n + 1 个。如果参数个数少于对应的占位符, printf() 可能会输出内存中的任意值。

7.1.3占位符举例

%a :⼗六进制浮点数,字⺟输出为⼩写。

• %A :⼗六进制浮点数,字⺟输出为⼤写。

• %c :字符。

• %d :⼗进制整数。//int

• %e :使⽤科学计数法的浮点数,指数部分的 e 为⼩写。

• %E :使⽤科学计数法的浮点数,指数部分的 E 为⼤写。

• %i :整数,基本等同于 %d 。

• %f :⼩数(包含 float 类型和 double 类型)。//float%fdouble-%lf

• %g :6个有效数字的浮点数。整数部分⼀旦超过6位,就会⾃动转为科学计数法,指数部分的 e

为⼩写。

• %G :等同于 %g ,唯⼀的区别是指数部分的 E 为⼤写。

• %hd :⼗进制shortint类型。

• %ho :⼋进制shortint类型。

• %hx :⼗六进制shortint类型。

• %hu :unsignedshortint类型。

• %ld :⼗进制longint类型。

• %lo :⼋进制longint类型。

• %lx :⼗六进制longint类型。

• %lu :unsignedlongint类型。

• %lld :⼗进制longlongint类型。

• %llo :⼋进制longlongint类型。

• %llx :⼗六进制longlongint类型。

• %llu :unsignedlonglongint类型。

• %Le :科学计数法表⽰的longdouble类型浮点数。

• %Lf :longdouble类型浮点数。

7.1.4限定宽度

printf() 允许限定占位符的最⼩宽度。

上⾯⽰例中, %5d 表⽰这个占位符的宽度⾄少为5位。如果不满5位,对应的值的前⾯会添加空格。输出的值默认是右对⻬,即输出内容前⾯会有空格;如果希望改成左对⻬,在输出内容后⾯添加空

格,可以在占位符的 % 的后⾯插⼊⼀个 - 号。

%12f 表⽰输出的浮点数最少要占据12位。由于⼩数的默认显⽰精度是⼩数点后6位,所以 123.45 输出结果的头部会添加2个空格。

7.1.4.2显示正负号

默认情况下, printf() 不对正数显⽰ + 号,只对负数显⽰ - 号。如果想让正数也输出 + 号,可以在占位符的 % 后⾯加⼀个 + 。

7.1.4.3限定⼩数位数

输出⼩数时,有时希望限定⼩数的位数。举例来说,希望⼩数点后⾯只保留两位,占位符可以写成 %.2f

7.1.4.4限定宽度

%6.2f 表⽰输出字符串最⼩宽度为6,⼩数位数为2。所以,输出字符串的头部有两个空格。

7.1.4.5输出部分字符串

%s 占位符⽤来输出字符串,默认是全部输出。如果只想输出开头的部分,可以⽤ %.[m]s 指定输出

的⻓度,其中 [m] 代表⼀个数字,表⽰所要输出的⻓度。

7.2 scanf

7.2.1基本用法

scanf() 函数⽤于读取⽤⼾的键盘输⼊。

程序运⾏到这个语句时,会停下来,等待⽤⼾从键盘输⼊。

⽤⼾输⼊数据、按下回⻋键后, scanf() 就会处理⽤⼾的输⼊,将其存⼊变量。

它的原型定义在头⽂件 stdio.h 。

scanf() 的语法跟 printf() 类似。

Tips:s注意:变量前⾯必须加上 & 运算符(指针变量除外),因为 scanf() 传递的不是值,⽽是地址,即将变量 i 的地址指向⽤⼾输⼊的值。

如果这⾥的变量是指针变量(⽐如字符串变量),那就不⽤加 & 运算符。

scanf() 处理数值占位符时,会⾃动过滤空⽩字符,包括空格、制表符、换⾏符等。

7.2.2返回值

scanf() 的返回值是⼀个整数,表⽰成功读取的变量个数。

如果没有读取任何项,或者匹配失败,则返回 0 。

如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量EOF(-1)。EOF-endoffile⽂件结束标志

7.2.3占位符

scanf() 常⽤的占位符如下,与 printf() 的占位符基本⼀致。

• %c :字符。

• %d :整数。

• %f : float 类型浮点数。

• %lf : double 类型浮点数。

• %Lf : long double 类型浮点数。

• %s :字符串。

• %[] :在⽅括号中指定⼀组匹配的字符(⽐如 %[0-9] ),遇到不在集合之中的字符,匹配将会

停⽌。

上⾯所有占位符之中,除了 %c 以外,都会⾃动忽略起⾸的空⽩字符。 %c 不忽略空⽩字符,总是返回当前第⼀个字符,⽆论该字符是否为空格。

如果要强制跳过字符前的空⽩字符,可以写成 scanf(" %c", &ch) ,即 %c 前加上⼀个空格,表⽰跳过零个或多个空⽩字符。

下⾯要特别说⼀下占位符 %s ,它其实不能简单地等同于字符串。它的规则是,从当前第⼀个⾮空⽩字符开始读起,直到遇到空⽩字符(即空格、换⾏符、制表符等)为⽌。

因为 %s 不会包含空⽩字符,所以⽆法⽤来读取多个单词,除⾮多个 %s ⼀起使⽤。这也意味着,

scanf() 不适合读取可能包含空格的字符串,⽐如书名或歌曲名。另外, scanf() 遇到 %s 占位

符,会在字符串变量末尾存储⼀个空字符 \0 。

7.2.4赋值忽略符

scanf() 提供了⼀个赋值忽略符(assignmentsuppressioncharacter) * 。只要把 * 加在任何占位符的百分号后⾯,该占位符就不会返回值,解析后将被丢弃。

#include <stdio.h>

int main()

{

 int year = 0;

 int month = 0;

 int day = 0;

 scanf("%d%*c%d%*c%d", &year, &month, &day);

 return 0;

}

上⾯⽰例中, %*c 就是在占位符的百分号后⾯,加⼊了赋值忽略符 * ,表⽰这个占位符没有对应的变量,解读后不必返回。

标签:输出,变量,浮点数,数据类型,占位,printf,scanf,语言
From: https://blog.csdn.net/kuaiww/article/details/142595095

相关文章

  • c语言数据类型和变量(上)
    C语⾔数据类型和变量数据类型介绍常见来说,使⽤整型类型来描述整数,使⽤字符类型来描述字符,使⽤浮点型类型来描述⼩数。C语言的数据类型分为内置类型和自定义类型,这里主要介绍内置类型。1.1字符型(char)char//character[signed]char//有符号的unsignedchar//⽆符号的1......
  • 实验1 C语言开发环境使用和数据类型、运算符、表达式
    任务1:1#include<stdio.h>23intmain(){4printf("OO\n");5printf("<H><H>\n");6printf("IIII\n");7return0;8} 1#include<stdio.h>23intmain(......
  • 变量、常量、作用域
    局部变量必须声明和初始化值在方法内使用publicclassDemo2{//类//类变量static从属于类staticdoublesalary=2500;//实例变量:从属于对象//可以不初始化,输出结果为这个类型的默认值(0/0.0/null/false)......
  • 关于Clion汉化失败Plugin “Chinese (Simplified) Language Pack / 中文语言包“ was
    关于Clion汉化失败出现Plugin"Chinese(Simplified)LanguagePack/中文语言包"wasnotinstalled:Invalidfilenamereturnedbyaserver意思是你安装的汉化包不可被识别,截止到23/7/22pluginsmarket搜索到的汉化包版本不再能兼容21版本的clion了解决方法有两个1.升......
  • 实验1 C语言输入输出和简单程序编写
    实验1:源代码1:#include<stdio.h>#include<stdlib.h>intmain(){printf("O\v");printf("<H>\v");printf("II\v");printf("O\v");printf("<H>\v");printf(......
  • 【重生之我】初学C语言之 指针
    指针or地址???指针概念C语言中每个内存单元都有一个编号,有了这个内存单元的编号,CPU就可以快速找到一个内存空间,储存空间中一个字节里面能存放8个比特位。bitBYTEKBMBGBTB比特字节(8bit)1024字节1024KB1024MB1024GB内存单元的编号==地址==指针Cpu从内存单元中拿数据,Cpu算完后数据再储存在......
  • 数据类型
    强类型语言要求变量的使用严格符合规定,所有变量都必须先定义后才能使用基本数据类型整数byte:一个字节(-128~127)short:两个字节int:4个字节long:8个字节long类型后面要加L浮点float:4个字节float类型后面要加Fdouble:8个字节字符类型char:2个字节注意:string不是......
  • JavaScript 变量的作用域链
    作用域链本质上就是使用的是哪个变量,全局变量,局部变量,自身的变量。这个在看别人代码的逻辑的时候非常有用,底层是变量的查找机制。嵌套关系的作用域窜连起来形成了作用域链在函数被执行,会优先查找当前函数作用域中的变量。如果当前函数作用域找不到,则会逐级查找父级作用域,知道......
  • 8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特
    特征工程是机器学习流程中的关键步骤,在此过程中,原始数据被转换为更具意义的特征,以增强模型对数据关系的理解能力。特征工程通常涉及对现有数据应用转换,以生成或修改数据,这些转换后的数据在机器学习和数据科学的语境下用于训练模型,从而提高模型性能。本文主要介绍处理数值变量特......
  • C语言入门到精通(第六版)——第七章
    7.1、循环语句    C语言中程序可以通过判断、检验条件做出选择,帮我们解决很多问题,除此之外,程序还可以执行重复,直到满足条件为止,例如,while、do...while和for语句。7.2、while语句    使用while语句可以解决某个条件满足时需要反复执行某个循环体的问题,表达式......