C语言数据类型、变量和运算符以及printf相关问题

简介: C语言数据类型、变量和运算符以及printf相关问题

一、常见数据类型

1.整数类型

int i = 0;

初始C语言时,int类型可以满足大部分程序的整数类型需求。int是有符号整型,即int类型的值必须是整数,可以是正整数、负整数或零。

short int i = 0;
  short i = 0;

short int类型(或简写为short)是有符号整型,占用的存储空间可能比int类型少,常用于较小数值的场合以便节省空间。

long int i = 0;
  long i = 0;

long int类型(或简写为long)是有符号整型,占用的存储空间可能比int类型大,常用于比较大数值的场合。

long long int i = 0;
  long long i = 0;//C99新加

long long int类型(或简写为long long)是有符号整型,占用的存储空间可能比long类型大,常用于非常大数值的场合,该类型至少占64位。

2.浮点数类型

float i = 0;

float类型是单精度浮点数类型,可以至少表示6位有效数字。

double j = 0;

doule类型是双精度浮点数类型,可以至少表示10位有效数字。

long double k = 0;

C语言中规定,long double用于比double更高精度的要求,但只要求至少和double精度相同。

3.布尔类型

#include<stdbool.h>//需要包含头文件<stdbool.h>
int main(void)
{
  _Bool flag = true;
  if(flag)
  printf("ok!");
}

C99标准中新增的_Bool类型,用于表示布尔值,即逻辑值true和false。

4.字符类型

char = 'a';

char类型用于存储字符,但是从技术层面来讲,char是整数类型,由于ASCII值可知,char类型实际上储存的是整数而非字符。

二、变量

1.变量的创建

在C语言中,将经常变化的值称为变量,不变的值称为常量。而类型的存在就是为了创建不同的变量。

data_type name;
    |      |
//数据类型 变量

在定义变量时,可以给予变量一个初始值,叫初始化。

int num = 10;
  float ret = 1.2;

2.变量的分类

(1)全局变量

全局变量是在大括号外部定义的一个变量。

#include<stdio.h>
  int num = 10;
  int main(void)
  {
  printf("%d ", num);//打印值为10
  }

全局变量的使用范围比较广,在整个工程中都是可以使用到。

(2)局部变量

局部变量在大括号内部定义的一个变量,可以在循环中、函数中等等。

#include<stdio.h>
int mian(void)
{
  int i = 1;
  while(i<2)
  {
    float n = 10/i;
    printf("%d ",  num);
    i = i + 1; 
  }
}

局部变量只能在自己所在的局部范围内使用。

如果全局变量和局部变量的名字相同会优先打印局部变量。

三、运算符

C语言中使用运算符表达算数运算。C语言中的运算符的使用范围非常广,在表达式,语言,函数中都可以使用。

1.加分运算符

a+b;
  c=a+3;
  3+3;
  printf("%d ", c+d, 2+2, 3+f);

加法运算符“+”运用于加法运算,使运算符俩侧的值相加。 加法运算符俩侧可以是变量或者是常量。

2.减法运算符

a-b;
  c=a-3;
  3-3;
  printf("%d ", c*d, 2-2, 3-f);

减法运算符“-”运用于减法运算,使运算符俩侧的值相减。 减法运算符俩侧同样可以是变量或者是常量。

3.乘法运算符

ret = 8*3;
  cam = 1*ret;
  hil = ret*cam;
  printf("%d ", 1*1, ret*hil);

乘法运算符“*”运用于乘法运算,使运算符俩侧的值相减。

4.除法运算符

除法运算符“/”运用于除法运算,/左侧是被除数,/右侧是除数。在进行除法运算时,整数除法和浮点数除法不同

//整数除法
  metre = 8/4;//值为2
  ret = 8/3;//值为2

由于整数除法的结果只能为整数,所以在C语言中,整数除法得到的小数部分被丢弃,这一过程被称为截断。

//浮点数除法
  num = 3.0/1.0;//值为0.3333334

浮点数除法的结果只能是浮点数。

5.求模运算符

求模运算符“%”,也称求余运算符,可以求得俩个整数的余数,且只能运用于整数运算。

num = 9%3;//值为0
  ret = 7%3;//值为1

加法、减法、乘法、除法、求模运算符都是双目运算符,即运算符俩侧都需要有运算对象。

6.符号运算符

“+”和“-”被用来表示正负。

int i = 1;
  int j = +1;//等价于i=1;
  int k = -1;

符号运算符为单目运算符,即单侧需要有运算对象。

7.自加运算符

自加运算符“++”,也称递加运算符,可以是作用对象值递加1。使用自加运算符时会有俩种情况,++出现在变量前面,称为前缀递加;++出现在变量后面,称为后缀递加。

++i;//前缀递加
  j++;//后缀递加
  //i和j的值都加1

俩者在实际使用中也有异同。

//前缀递加
  int k = 0;
  int i = 5;
  k = ++i;//k=6;i=6;
  //口诀:先自加,后使用

前缀递加在使用时,++在前面,需要先自加,然后赋值。

//后缀递加
  int m = 0;
  int n = 5;
  m = n++;//m=5;n=6;
  //先使用,后递加

后缀递加在使用时,++在后面,需要先赋值,然后自加。

8.自减运算符

自减运算符在使用时和自加运算符相同。

自减运算符“–”,也称递减运算符,可以是作用对象值递减1。使用自减运算符时也会有俩种情况,–出现在变量前面,称为前缀递减;–出现在变量后面,称为后缀递减法。

//前缀递减
  int k = 0;
  int i = 5;
  k = --;//k=4;i=4;
  //口诀:先自减,后使用

前缀递减在使用时,–在前面,需要先自减,然后赋值。

//后缀递减
  int m = 0;
  int n = 5;
  m = n--;//m=5;n=4;
  //先使用,后递加

后缀递减在使用时,–在后面,需要先赋值,然后自减。

自加、自减运算符也是单目运算符,需要单侧有运算对象。

9.赋值运算符及赋值表达式

(1)赋值运算符

赋值运算符“=”可以将一个表达式的值赋给变量。

int i = 0;
  i = 5 * 4;
  i = i + 1;

1.被赋值的变量必须是单个变量,且必须在赋值运算符的左边。

2.赋值运算符“=”与数学中的“=”不一样。

3.当表达式的值类型与被赋值变量的类型不同,但都是数值或者字符类型时,系统会自动将表达的值类型改变为被赋值变量的类型。

(2)复合赋值运算符

复合赋值运算符,即在赋值运算符之前加上双目运算符。C语言中有十种复合赋值运算符:+=、-=、/=、*=、%=、>>=、<<=、&=、|=、^=.

int i = 0;
  i = i + 9;
  i += 9;//等价于 i=i+9;

复合赋值预算符可以简化过程,提高编译效率。

10.逗号运算符

逗号运算符“,”,也称顺序求值运算符,可以将多个表达式连接起来以此求值。

int i = 0;
  i = 4 + 5,i * 4//没有;
  //先计算i=4+5;得到i=9;再计算i*4=36;
  //整个逗号表达式的值为36.

逗号表达式的值一般为:表达式1,表达式2,……表达式n

需要依次计算每个表达式的值,最后一个表达式计算的是这个逗号表达式的值。

四、printf相关问题

以提问的方式简答printf函数相关问题,以便检测大家

1.何为printf函数?

使用头文件#include格式输出函数printf是按照指定的格式,向显示器输出不同类型的数据·(int,float,char等),printf函数的格式一般为printf(格式控制,输出列表)。

printf("a=%d\n", a);

2.格式控制是什么?

格式控制是用在“”中,其包含三种信息:a=是普通字符,%d是格式说明(占位符),\n是转义字符。

3.输出列表是什么?

输出列表是为了输出数据,可以是变量、常量、字符、字符串或者表达式。

4.格式说明(占位符)是个啥?

格式说明占位符}的一般形式为:%[标志][宽度][精度][长度][类型]组成。

printf("%-5.3ld", i);

格式说明占位符}的作用是将输出的数据转化为指定的格式输出。

格式说明(占位符}由转换说明和转换说明修饰符组成,转换说明把储存在电脑里的二进制格式的值使用不同的类型输出,转换说明与打印的数据类型相匹配,例如:“%d打印整数类型,%f打印小数类型,%c打印字符类型,%s打印字符串类型……”

转换说明修饰符可以输出不同类型的值时对其格式进行修饰,例如“可以改变字段宽度的%*d,可以改变精确度的%.*f。”

通常来讲,占位符中还有标记,由于其也起修饰作用,可以归类在修饰符中对占位符进行修饰,例如“%-*d可以让输出值向左对齐”

5.转换说明有哪些?

转换说明为%[类型],不同的[类型]会输出不同的值。

6.如何多个占位符怎么一起使用?

格式控制中的一个占位符对应唯一的输出列表中的数据,是按照顺序一一对应的关系。

7.如何如何限定输出最小宽度?

%[宽度][类型]中宽度为正整数,可以输出结果的宽度。若结果长度大于指定宽度,输出结果长度;若结果长度小于指定宽度,输出长度为指定长度,输出的数据向右对其,左面空余部分为空格。

8.如何限制小数的使用精度?

%[精度][类型]中精度为.加正整数,可以限定小数的位数。

9.如何控制左对齐或者右对齐?

%[标志][宽度][类型]中标志可以为”-”,%-[宽度][类型]时数据向左对齐,%[宽度][类型]时数据向右对齐。

10.如何总是输出带有“+”“-”的值?

%[标志][类型]中标志可以为“+”,结果为正值会打印的数据会带有“+”,结果为负值会打印的数据会带有“-”。

11.如何改变转换说明的长度?

%[长度][类型]中确定确定类型后,更换不同的[长度]可以改变字节长度。

12.%*.*f 是什么意思?

在最初打印数据时不了解应该打印的结果宽度以及结果的小数精度,可以使用代替[宽度][精度],在后面的输出列表处也需要有对应的变量或常量。

13.如何输出部分字符串?

输出字符串使用的转换说明为%s,默认输出时为全部字符。若需要输出部分的字符,可以模仿[精度]使用,例如“%.3s”打印三个字符。

相关文章
|
27天前
|
C语言
C语言判断和运算符联系
在 C 语言中,判断与运算符紧密相关,主要体现在条件表达式的使用上。
173 87
|
26天前
|
安全 C语言
C语言运算符的使用注意点
在C语言中,正确使用运算符能提升代码的可读性和效率。本文介绍了八大注意事项:运算符优先级和结合性影响运算顺序;自增/自减运算符分前缀和后缀形式;逻辑运算符有短路特性;位运算符直接操作二进制位需谨慎;条件运算符简洁但避免复杂嵌套;类型转换避免意外结果;使用括号明确运算顺序。掌握这些要点有助于编写更安全高效的代码。
165 72
|
7天前
|
C语言
3.4 C语言基本数据类型2
在C语言中,声明一个整型(int)变量时,需先写入&#39;int&#39;关键字,后跟变量名并以分号结尾。若同时声明多个变量,可在&#39;int&#39;后用逗号分隔列出所有变量名。例如,`int erns;` 或 `int hogs, cows, goats;` 都是合法声明。变量声明后需通过赋值语句如 `cows = 112;` 或使用函数如 `scanf()` 来初始化其值。
28 10
|
7天前
|
存储 程序员 C语言
3.1 C语言基本数据类型
在C语言中,整数类型如`int`类型是很有用的,它属于有符号整型,意味着该类型的值必须是整数,并且可以是正整数、负整数或者零。`int`类型的数值范围依据计算机系统有所不同,通常取决于系统的位宽。例如,在早期16位的IBM PC兼容机上,`int`类型使用16位存储,取值范围为-32768至32767;而在当前32位系统中,使用32位存储,拥有更宽泛的取值范围。随着64位处理器的普及,`int`类型能够存储的整数范围将进一步扩大。根据ISO C标准,`int`类型的最小取值范围被规定为-32768到32767。系统通常会利用一个特殊的位来表示整数的正负。
20 10
|
7天前
|
C语言
3.1C语言基本数据类型
在C语言中,初始化变量是指为变量设定初始值,通常在声明时直接完成,例如 `int cows=32;`。应注意避免在同一语句中混合初始化与未初始化的变量,如 `int dogs, cats=94;` 这样的写法容易引起误解。此外,整型常量如21、32等在C语言中被视为int类型,但非常大的整数则不然,且带有小数点或指数的数值不属于整型常量。
18 9
|
2天前
|
C语言 C++
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
|
13天前
|
安全 C语言
在C语言中,正确使用运算符能提升代码的可读性和效率
在C语言中,运算符的使用需要注意优先级、结合性、自增自减的形式、逻辑运算的短路特性、位运算的类型、条件运算的可读性、类型转换以及使用括号来明确运算顺序。掌握这些注意事项可以帮助编写出更安全和高效的代码。
25 4
|
27天前
|
存储 C语言 数据格式
【C语言基础考研向】03混合运算和printf讲解
本文分为两部分。第一部分介绍了C语言中的混合运算与类型强制转换的重要性,通过实例展示了当整型数进行除法运算且结果为小数时,必须使用类型转换才能正确存储浮点数结果。第二部分详细讲解了`printf`函数的功能与使用方法,包括格式化输出不同类型数据的基本语法,并通过具体示例演示了如何利用字段宽度和对齐方式来控制输出格式,帮助读者更好地理解和掌握输出格式的控制技巧。
28 10
|
27天前
|
程序员 C语言
【C语言基础考研向】06运算符与表达式
本文介绍了C语言中的运算符分类、算术运算符及表达式、关系运算符与表达式以及运算符优先级等内容。首先概述了13种运算符类型,接着详细说明了算术运算符的优先级与使用规则,以及关系运算符和表达式的真假值表示,并给出了C语言运算符优先级表。最后附有课后习题帮助巩固理解。
80 10
|
28天前
|
存储 C语言 索引
C 语言数据类型详解
C语言中的数据类型主要包括基本数据类型、构造数据类型和用户定义数据类型。基本类型如整型(`int`)、字符型(`char`)、浮点型(`float`)、双精度浮点型(`double`)和无符号整型(`unsigned int`)。构造类型包括数组(`Array`)、结构体(`Struct`)、共用体(`Union`)和枚举(`Enum`)。用户定义类型则通过`typedef`为已有类型定义新名称,并可通过结构体和共用体自定义复合数据结构。此外,还有指针类型用于存储变量地址,以及`signed`、`unsigned`、`short`、`long`等类型修饰符。
58 11