【C语言】基础知识(下篇)

本文详细介绍了C语言中的算术操作符、类型转换方法,以及scanf和printf函数的用法,包括格式化输出、占位符、宽度限定和输入处理等内容。
摘要由CSDN通过智能技术生成

1.算术操作符(+ - * / %)

C语言中为了方便运算 ,提供了一系列操作符,其中有一组操作符叫做:算术操作符。写代码时一定会涉及到运算,操作符也叫做运算符。

1.1 +和-

  • + 和 - 用来完成加法和减法
  • + 和 - 都是有两个操作符,位于操作符两端的就是它们的操作数,这种操作符也叫做双目操作符
#include <stdio.h>
int main()
{
	int x = 1 + 2;
	int y = 2 - 1;
	printf("%d\n" , x );
	printf("%d\n" , y );
	return 0;
}

1.2 *

运算符 * 用来完成乘法。

#include <stdio.h>
int main()
{
	int x = 2;
	printf("%d\n" , x * x);//输出4
	return 0;
}

1.3 /

运算符 / 用来完成乘法。
除法的两端如果是整数,执行的是整数除法,得到的结果也是整数。

#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语言就会进行浮点数除法。

示例一:

#include <stdio.h>
int main()
{
	int x = 5;
	x = ( x / 20) * 100;
	return 0;
}

上面代码最后会得到一个整数0,如果要得到预想中的结果25,可以将除数20改成20.0,让整除变成浮点数的除法:

#include <stdio.h>
int main()
{
	int x = 5;
	x = ( x / 20.0) * 100;
	return 0;
}

1.4 %

运算符 % 表示求模运算,即返回两个整数相除的余值。这个运算符只能用于整数,不能用于浮点数。

#include <stdio.h>
int main()
{
	int x = 6 % 4;
	printf("%d\n" , x );//输出2
	return 0;
}

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

#include <stdio.h>
int main()
{
	printf("%d\n", 11 % -5); //输出1
	printf("%d\n",-11 % -5); //输出-1
	printf("%d\n",-11 % 5); //输出-1
	return 0;
}

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

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

1.6.1 连续赋值

赋值操作符也可以连续赋值,如:

int a = 3;
int b = 5;
int c = 0;
c = b = a+3;//连续赋值,从右向左依次赋值的

1.6.2 复合赋值符

在写代码时,我们经常可能对⼀个数进行自增、自减的操作,如下代码:

int a = 10;
a = a+3;
a = a-2;

这样代码C语言给提供了更加方便的写法:

int a = 10;
a += 3;
a -= 2;

C语言中提供了复合赋值符,方便我们编写代码,这些赋值符有:

 - +=  -=
 2.*=  /=  %=
 3.>>=  <<=
 4.&=  |=  ^=

1.7 单目操作符:++、–、+、-

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

1.7.1 ++和–

++是⼀种自增的操作符,又分为前置++和后置++,–是⼀种自减的操作符,也分为前置–和后置–。

前置++:

int a = 10;
int b = ++a;//++的操作数是a,是放在a的前⾯的,就是前置++
printf("a=%d b=%d\n",a , b);

计算口诀:先+1,后使用;
a原来是10,先+1,后a变成了11,再使用就是赋值给b,b得到的也是11,所以计算结束后,a和b都是11,相当于这样的代码:

int a = 10;
a = a+1;
b = a;
printf("a=%d b=%d\n",a , b);

后置++:

int a = 10;
int b = a++;//++的操作数是a,是放在a的后⾯的,就是后置++
printf("a=%d b=%d\n",a , b);

计算口诀:先使用,后+1
a原来是10,先使⽤,就是先赋值给b,b得到了10,然后再+1,然后a变成了11,所以直接结束后a是
11,b是10,相当于这样的代码:

int a = 10;
int b = a;
a = a+1;
printf("a=%d b=%d\n",a , b);

前置–:

计算口诀:先-1,后使用

int a = 10;
int b = --a;//--的操作数是a,是放在a的前⾯的,就是前置--
printf("a=%d b=%d\n",a , b);//输出的结果是:99

后置–:

计算口诀:先使用,后-1

int a = 10;
int b = a--;//--的操作数是a,是放在a的后⾯的,就是后置--
printf("a=%d b=%d\n",a , b);//输出的结果是:9 10

1.7.2 +和-

+ 和 - 这里的 + 是正号,- 是负号,都是单目操作符。
运算符 + 对正负值没有影响,是⼀个完全可以省略的运算符,但是写了也不会报错。

int a = +10; //等价于 int a = 10;

运算符 - ⽤来改变⼀个值的正负号,负数的前⾯加上 - 就会得到正数,正数的前⾯加上 - 会得到负数。

int a = -10;

2.强制类型转换

当a的是int类型, 3.14是double类型,两边的类型不⼀致,编译器会报警告

int a = 3.14;

为了消除这个警告,我们可以使用强制类型转换:

int a = (int)3.14;

俗话说,强扭的瓜不甜,我们使⽤强制类型转换都是万不得已的时候使⽤,如果不需要强制类型转化就能实现代码,这样自然更好的。

3.scanf和printf介绍

3.1 printf

基本用法:printf() 的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的 f 代表 format (格式化),表示可以定制输出文本的格式。

#include <stdio.h>
int main() 
{
	printf("Hello World");
	return 0;
}

上⾯命令会在屏幕上输出一行文字“Hello World”。
printf() 不会在行尾自动添加换行符,运⾏结束后,光标就停留在输出结束的地方,不会自动换
行。
为了让光标移到下一行的开头,可以在输出文本的结尾,添加一个换行符 \n 。

3.1.1 占位符

printf() 可以在输出文本中指定占位符。
所谓 “占位符”,就是这个位置可以用其他值代入。

  • %a :⼗六进制浮点数,字⺟输出为⼩写。
  • %A :⼗六进制浮点数,字⺟输出为⼤写。
  • %c :字符。
  • %d :⼗进制整数。
  • %e :使⽤科学计数法的浮点数,指数部分的 e 为⼩写。
  • %E :使⽤科学计数法的浮点数,指数部分的 E 为⼤写。
  • %i :整数,基本等同于 %d 。
  • %f :⼩数(包含 float 类型和 double 类型)。
  • %g :6个有效数字的浮点数。整数部分⼀旦超过6位,就会自动转为科学计数法,指数部分的 e为小写。
  • %G :等同于 %g ,唯⼀的区别是指数部分的 E 为⼤写。
  • %hd :⼗进制 short int 类型。
  • %ho :⼋进制 short int 类型。
  • %hx :⼗六进制 short int 类型。
  • %hu :unsigned short int 类型。
  • %ld :⼗进制 long int 类型。
  • %lo :⼋进制 long int 类型。
  • %lx :⼗六进制 long int 类型。
  • %lu :unsigned long int 类型。
  • %lld :⼗进制 long long int 类型。
  • %llo :⼋进制 long long int 类型。
  • %llx :⼗六进制 long long int 类型。
  • %llu :unsigned long long int 类型。
  • %Le :科学计数法表⽰的 long double 类型浮点数。
  • %Lf :long double 类型浮点数。
  • %n :已输出的字符串数量。该占位符本⾝不输出,只将值存储在指定变量之中。
  • %o :⼋进制整数。
  • %p :指针。
  • %s :字符串。
  • %u :⽆符号整数(unsigned int)。
  • %x :⼗六进制整数。
  • %zd : size_t 类型。
  • %% :输出⼀个百分号。

3.1.2 限定宽度

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

#include <stdio.h>
int main()
{
	printf("%5d\n", 123); // 输出为 " 123"
	return 0;
}

上面示例中, %5d 表示这个占位符的宽度至少为5位。如果不满5位,对应的值的前面会添加空格。
输出的值默认是右对齐,即输出内容前面会有空格;如果希望改成左对齐,在输出内容后面添加空
格,可以在占位符的 % 的后⾯插入⼀个 - 号。

3.1.3 限定小数位数

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

// 输出 Number is 0.50
#include <stdio.h>
int main()
{
	printf("Number is %.2f\n", 0.5);
	return 0;
}

3.1.4 输出部分字符串

%s 占位符用来输出字符串,默认是全部输出。如果只想输出开头的部分,可以⽤ %.[m]s 指定输出
的⻓度,其中 [m] 代表⼀个数字,表示所要输出的长度。

// 输出 hello
#include <stdio.h>
int main()
{
	printf("%.5s\n", "hello world");
	return 0;
}

4.scanf

scanf() 函数用于读取用户的键盘输入。程序运行到这个语句时,会停下来,等待用户从键盘输入。用户输入数据、按下回车键后, scanf() 就会处理用户的输入,将其存入变量。它的原型定义在头文件 stdio.h 。scanf() 的语法跟 printf() 类似。

scanf("%d", &i);

读入多个变量

 scanf("%d%d%f%f", &i, &j, &x, &y);

有错误欢迎指出~
在这里插入图片描述

  • 19
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卿摆摆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值