我正在备考,我收到的示例问题之一如下:
“以下哪个表达式分配给 new_val(表达式将替换 HERE)时将打印 7?”选择所有适用项:
float m = 7.0
int *a = (int *) &m;
int new_val = HERE;
printf("%d\n", new_val);
(a) *(int *) &m
(b) *a
(c) (int) 米
(d) 以上都不是。
答案只有(c)。
我已经在我自己的机器上运行了这个程序,我发现的结果与答案一致。但是,我想知道有人怎么能得出这个答案?更一般地说,我无法理解有关类型转换指针的规则。我已经阅读了 StackOverflow 上的其他几篇文章,它们对我帮助不大。
我想知道是否有人可以帮助阐明我如何解决与此类似的问题。
最佳答案
但是使用
int new_val = (int)m;
忽略上一行中使用 int* a = ...
所以您只是将原始 float m
转换回 int。
编辑 尝试以下操作:
#include "stdio.h"
int main(int argc, char** argv) {
float m = 7.1;
int new_val = (int)m;
printf("%d\n", new_val);
}
关于c - 什么时候允许类型转换指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57138059/