AI智能推荐题库-试题通 AI智能整理导入题库-试题通
×
首页 题库中心 c语言选择判断题库 题目详情
CA4E3A01C46000013755684012D01E55
c语言选择判断题库
379
单选题

1、第113题 (1.0分) 题号:700 设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下 不能正确执行的赋值语句是()。

A
 c=*p1+*p2;
B
 p2=c;
C
 p1=p2;
D
 c=*p1*(*p2);

答案解析

正确答案:B

解析:

这是一道关于 C 语言指针与变量类型兼容性的题目。我们需要分析每个选项中赋值操作左右两边的数据类型是否匹配,以及操作是否符合 C 语言的语法规则。 **已知条件:** * `p1` 和 `p2` 是指向字符串的指针变量(即类型为 `char *`)。 * `c` 是字符变量(即类型为 `char`)。 **逐项分析:** * **A. `c = *p1 + *p2;`** * `*p1` 和 `*p2` 分别取出指针指向的字符,其值为 `char` 类型。 * 在 C 语言中,`char` 类型参与算术运算时会提升为 `int` 类型。两个字符相加得到一个整数值。 * 将该整数值赋值给 `char` 类型的变量 `c` 时,会发生隐式类型转换(截断高位),虽然可能丢失精度或导致结果不符合预期逻辑,但从**语法层面**看,这是合法的赋值语句,可以正确执行(编译通过)。 * **B. `p2 = c;`** * `p2` 是一个指针变量(`char *`),它存储的是内存地址。 * `c` 是一个字符变量(`char`),存储的是字符的 ASCII 码值(整数)。 * 在标准的 C 语言中,**不能直接将一个整数(或字符)赋值给一个指针变量**,除非进行强制类型转换(如 `p2 = (char *)c;`)。直接赋值会导致类型不匹配错误(Type mismatch),编译器通常会报错或发出严重警告。因此,这条语句**不能正确执行**。 * **C. `p1 = p2;`** * `p1` 和 `p2` 都是同类型的指针变量(`char *`)。 * 将指针 `p2` 的值(即地址)赋值给指针 `p1`,使得 `p1` 也指向 `p2` 所指向的位置。这是完全合法且常见的指针操作。 * **D. `c = *p1 * (*p2);`** * `*p1` 和 `*p2` 取出字符值。 * 两个字符相乘,结果为整数类型。 * 将结果赋值给 `char` 类型的 `c`,同样涉及从 `int` 到 `char` 的隐式转换。虽然逻辑上可能奇怪(字符相乘),但在**语法层面**是合法的赋值语句,可以执行。 **结论:** 选项 B 试图将一个字符型数据直接赋值给指针变量,违反了 C 语言的类型安全规则,属于非法赋值。 故正确答案为 **B**。
题目纠错
c语言选择判断题库

扫码进入小程序
随时随地练习

关闭登录弹窗
专为自学备考人员打造
勾选图标
自助导入本地题库
勾选图标
多种刷题考试模式
勾选图标
本地离线答题搜题
勾选图标
扫码考试方便快捷
勾选图标
海量试题每日更新
波浪装饰图
欢迎登录试题通
可以使用以下方式扫码登陆
APP图标
使用APP登录
微信图标
使用微信登录
试题通小程序二维码
联系电话:
400-660-3606
试题通企业微信二维码