2247. Day1 B - 基本变量类型练习 I

程序是对内存的抽象,而变量是这种抽象的最基本单位。—— 布莱恩·克尼汉(Brian Kernighan)

在本章中,我们将学习几种常见变量类型的使用,不同类型的变量储存的信息不同,占用的内存空间大小也不同

类型存储范围占用内存占位符
int-2,147,483,648 ~ 2,147,483,6474 字节%d
long long-9\times10^{18} ~ 9\times10^{18}8 字节%lld
char-128 ~ 1271 字节%c
bool0 (false)1 (true)1 字节%d
float\pm10^{38} (有效精度 6 位)4 字节%f
double\pm10^{308} (有效精度 15 位)8 字节%lf

最常用的变量类型是 int,它支持正负 21 亿的整数存储,也就是说,当你的运算结果大于 2 147 483 647 时,它就会出错

通过引进 long long,可以支持 \pm2^{63} 次方的整数储存,代价是占用更多的储存空间

floatdouble 用于储存小数,使用科学计数法,形如 x\times10^y,优势在于用并不大的内存空间可以储存极大的数值,如 3.1416\times10^{100},但它的 "x" 位数仍然相较有限,不能存储太大的数据,也就是说 3.14\times10^1 + 3.00\times10^{100} = 3.00\times10^{100}, 会出现丢精;由于现代计算机内存较为富裕,float 由于精度不佳正在逐步退出历史舞台

char 仅占用 1 字节,可以表示 -128 ~ 127 内的整数,使用其正数部分,表示英文字母和一些标点符号,称为 ascii 码表

bool 仅表示逻辑真 true 或逻辑假 false,任何非 0 值(包括负数,小数,反正只要不是 0)的值都为 true,虽然逻辑上它仅需一个二进制位就能表示,但由于字节(八位二进制)是计算机存储的基本单位,因此它也需占用一个字节(char 浪费负数部分不表示字符,也是同样的原因)

运算具有优先级,其逻辑相当于常规数学逻辑,详见 C++ 优先级表

简单来说,运算的加减乘除遵循传统四则运算,如 cout << 1 + 2 * 3 - 4; 输出 3

int 无法储存小数,在遇到小数时遵循向零舍入,即正数向下舍入,负数向上舍入,如 cout << 14 / 5; 输出 2

另有取模运算 %,用于计算模结果,即整除运算后的余数,如 cout << 5 % 3; 输出 2

类型和类型之间运算,遵循向更大更精确的类型兼容,如 int + long long -> long longdouble / int -> double

本题需要你读入两个整数 a, b

请你分别输出 a+b, a-b, a*b, a/b, a\%b 的结果,除法运算结果保留整数,向零舍入

输入

输入仅一行,两个整数 a, b (-10^9 \le a, b \le 10^9, b \neq 0)

输出

输出五行,具体格式见样例,不含空格

样例

标准输入 复制文本
5 7
标准输出 复制文本
a+b=12
a-b=-2
a*b=35
a/b=0
a%b=5

提示

思考:

在结合运算中,模运算的优先级是怎么样的呢?对负数取模的情况是怎么样的呢,模负数呢?

如果你使用 c++ 通过此题,那么 c 语言能通过吗?在 c 语言做法中,你在输出 % 时遇到什么问题

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 598
通过 93