首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基本数据类型的指针对象c

基本数据类型的指针对象c
EN

Stack Overflow用户
提问于 2013-07-10 11:14:11
回答 2查看 224关注 0票数 0

我知道这可能是个愚蠢的问题。

我完全对此感到困惑,我承认我没有正确地理解基础知识。为什么

代码语言:javascript
复制
BOOL *booleanTest = (5 < 1)? YES : NO;

没有抛出编译错误,它是一个原始数据类型,并且它不能有指针,这使得它总是编译并返回yes,而不管内部条件如何。

请保佑我,告诉我原因和原因

代码语言:javascript
复制
int *magicNumber = value / 25;

未引发编译错误。

EN

回答 2

Stack Overflow用户

发布于 2013-07-10 11:24:53

C的类型并不像你明显认为的那样严格。将整数赋值给指针是合法的,尽管通常是不明智的。但是,编译器应该警告你赋值是从一个整数中生成一个指针,而不是强制转换。

票数 2
EN

Stack Overflow用户

发布于 2013-07-10 11:33:45

在这两种情况下,您都在声明变量并在那里使用它们,而不需要任何类型的初始化。

我假设您不知道声明和初始化之间的区别,所以在声明期间,变量的值被设置为垃圾或某个随机值。它的赋值方式是因为指针指向的存储单元是某个随机存储单元,该存储单元被其他应用程序使用,该应用程序已将值留在那里。现在,在第一种情况下会发生什么:

代码语言:javascript
复制
BOOL *booleanTest = (5 < 1)? YES : NO;

指针booleanTest被设置为类型BOOL,并且它所指向的值仅是指向整个存储单元所需的数值的一半。所以它占据了单元格的前几个比特,可能是1,所以它总是变成YES。

在第二种情况下

代码语言:javascript
复制
int *magicNumber = value / 25;

这不会导致任何编译错误,因为它在法律上允许将值存储在指定值中。它将类型转换为指针的确切变量类型。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17561887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档