使用 Visual Studio 2019 【在更】基础 | C 语言笔记( 六 )


答:先定义的变量在高地址 。
例:混合输入双精度浮点型数据
在上例基础上加入型变量 , 改动第9、10、12行
输出:
数据类型输入输出
int
100
100
char
float
1.1
1.
1.1
-.
解析:
在第 12 行设断点 , 运行发现变量 f 与 d 地址上的数值相同 , 都是输入的 1.1(计算方式详见 2.5.2 节)
视频里这个例子没有解释的很详细 , 我找到的解释是基于 scanf 函数与函数对 %f 格式的不同理解:关于scanf的%f和%lf , 及的%f
由于变量 f 为长 4 字节的浮点数类型 , 变量 d 为长 8 字节的浮点数类型 。
在为变量申请空间时 , f 的内存范围为 - , d 的内存范围为 - 。
根据小端模式的原则 , 两组输入 1.1 的十六进制表示为 3f 8c cc cd , 在内存中存放形式为 cd cc 8c 3f 。
当程序运行至函数时 ,  函数根据 %f 格式将指针指向变量 f 的与变量 d 的将赋值传入 。
当程序运行值函数时 ,  函数仅将 %f 格式解释为 “打印浮点数” , 由于浮点型常量默认按型(8 个字节)运算 , 因此函数按从地址到地址顺序打印内存 , 即 cc cc cc cc 3f 8c cc cd 。
基于以上 , 更改代码第 10 行如下:
%lf 为双精度浮点型格式 , 占 8 个字节 。
输出:
2.9.4函数介绍
函数可以一次从标准输入缓冲区读取一个字符 , 等价于 char c; scanf("%c", &c); 。
语法格式:
#include int getchar(void);
函数返回 int 型是为了方便起见 。在函数出错时 , 函数返回值为 -1 , -1 不在 ASCII 码范围内 , 使用 char 型表示不方便 , 而使用 int 型表示方便的同时变量的长度要求(4 字节)不影响 char 型变量(1 字节)本身 。
2.9.5函数介绍
输出字符型数据时使用函数 , 其作用是向显示器设备输出一个字符 。
语法格式:
#include int putchar(int ch);
函数输出时不会在末尾补充换行符号 , 但 2019 版本的会在末尾自动生成换行 。
例: +
输出:
2.9.6函数介绍
函数可以输出各种类型的数据 , 包括整型、浮点型、字符型、字符串型等 , 实际原理是函数将这些类型的数据格式化为字符串后 , 放入标准输出缓冲区 , 然后通过 \n 来刷新标准输出 , 并将结果显示到屏幕上 。
语法格式:
#include int printf(const char *format, ...);
函数根据给出的格式打印输出到 (标准输出)和其他参数中 。
字符串格式()由两部分组成:显示到屏幕上的字符和定义函数显示的其他参数 。我们可以指定一个包含文本在内的字符串 , 也可以是映射到的其他参数的 “特殊” 字符 , 如下列代码所示:
int age = 21;printf("Hello %s, you are %d years old\n", "Bob", age);
输出:
Hello Bob, you are 21 years old
例: 函数输出对齐
输出:
%3d 靠右对齐;%-3d 靠左对齐;s 默认靠右对齐 , 前面加入 5 个空格 。
2.10 运算符与表达式 2.10.1 运算符分类
C 语言提供了 13 种类型的运算符 , 如下所示: