事实上,这种派任是一种限制,要求从任何符合规定的C执行中进行诊断(可能只是警告)。 语言标准没有界定该方案的行为。
http://www.un.org。 限制载于rel=“nofollow”>C99标准,其中描述了供作简单转让的特许歌剧。 旧的C90标准基本相同。 预先国家调查C(如1978年公布的K&R1号文件所述)确实允许这种特定形式的默示转换,但自1989年版本以来,这种转换是无效的。
如果汇编成册,可能发生的情况是:
int a="Hello World";
如果是这样的话,将予以对待。
int a = (int)"Hello World";
投射物具有点值,转换成暗中。 这种转换的含义是实施界定的;如果char*
和int
的大小不同,则可能失去信息。
某些转换可以明确进行,例如不同算术类型之间的转换。 这也许不是。
您的编辑should对此表示不满。 降低警告水平,直至达到这一水平。 (让我们看你再次使用什么汇编者,我们可以告诉你如何这样做)
http://www.un.org。
<代码>f 呼吁:
printf(a);
在C90没有界定的行为,是一种限制行为,需要在C99进行诊断,因为你重新要求使用一种没有明显原型的理论功能。 如果您希望打上<条码>,请上<>条码>。 a
#include <stdio.h>
(In some circumstances, the compiler won t tell you abut this, but it s still incorrect.) And given a visible declaration, since printf
s first parameter is of type char*
and you re passing it an int
.
如果贵国的汇编者没有抱怨
double a="Hello World";
你们应当有一个更好的汇编者。 这(可能)试图将点值转换为<条码>杜布莱条码>,这根本就没有任何意义。