|
10鱼币
临近计算机二级考试,考前抱佛脚,从图书馆借了本《计算机等级考试二级 C 语言考点精解及全真模型(上)》康康题型。有一例题以下定义语句中正确的是____,选项 B 是这样的 答案竟然就是选项 B?,我往 Microsoft Visual C++ 2010 学习版 中输入试试看:
- /* 环境:Microsoft Visual C++ 2010 学习版
- * 文件名:assign.c
- * 作用:理解赋值表达式
- * 日期:2021 年 9 月 16 日
- */
- #include <stdio.h>
- #include <Windows.h>
- int main( )
- {
- char A = 65+1, b = "b";
- printf("A: %c\nb: %c%\n", A, b);
- system("pause");
- return 0;
- }
复制代码
assign.c
直接提示类型错误:
我直接按下 fn+F5 编译运行:
这是为什么呢?难道将字符串
的地址赋值给了字符变量
往其中加入一行输出语句试试看:
- /* 环境:Microsoft Visual C++ 2010 学习版
- * 文件名:assign.c
- * 作用:理解赋值表达式
- * 日期:2021 年 9 月 16 日
- */
- #include <stdio.h>
- #include <Windows.h>
- int main( )
- {
- char A = 65+1, b = "b";
- printf("%p\n", b);
- printf("A: %c\nb: %c%\n", A, b);
- system("pause");
- return 0;
- }
复制代码
再来一次
十六进制 00000058 转换成十进制整数表示就是 88 正好是大写字母 X 对应的 ASCII 码值。
不知道我的想法对不对呢?
本帖最后由 人造人 于 2021-9-16 18:23 编辑
B 怎么能是对的呢
B 是对的,也就是说,A、C、D 都直接无法通过编译?
char b = "b";
这个会把字符串 "b" 的首地址赋值给变量 b
这个地址有可能是 32 位 4 个字节,也有可能是 64 位 8 个字节
不管多少位,只要最低字节
你想的基本是对的,只是用来测试的代码是不对的
应该是下面这样,运行下面这个代码,你再看看输出结果
- /* 环境:Microsoft Visual C++ 2010 学习版
- * 文件名:assign.c
- * 作用:理解赋值表达式
- * 日期:2021 年 9 月 16 日
- */
- #include <stdio.h>
- #include <Windows.h>
- int main( )
- {
- char A = 65+1, b = "b";
- printf("%p\n", "b");
- printf("A: %c\nb: %c\n", A, b);
- return 0;
- }
复制代码
选项 B 是错的,如果 A、C、D 都无法通过编译,那就选 B 吧,毕竟是考试
|
最佳答案
查看完整内容
B 怎么能是对的呢
B 是对的,也就是说,A、C、D 都直接无法通过编译?
char b = "b";
这个会把字符串 "b" 的首地址赋值给变量 b
这个地址有可能是 32 位 4 个字节,也有可能是 64 位 8 个字节
不管多少位,只要最低字节
你想的基本是对的,只是用来测试的代码是不对的
应该是下面这样,运行下面这个代码,你再看看输出结果
选项 B 是错的,如果 A、C、D 都无法通过编译,那就选 B 吧,毕竟是考试
|