2
15
遵不遵守,不是看怎么说的,是要看怎么做的。
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
况且100%怎么说就怎么做是不可能办到的。
1+1=2这种事,古往今来发生过哪怕一次吗?
1
不要轻信任何约定。
您的意思是标准规范没人遵守?
各种编译器都还是朝着完全遵守标准走的。知道是符合标准的代码,各家编译器行为都会一致的。
否则就没有正确的代码了。
2
1
2
不保证
假如是c++呢,最好引用:
@fefe82
你对标准好像很有研究,说一下你的看法
这个标准是有明确规定的,不是未定义行为。
1
1
@fefe82
你对标准好像很有研究,说一下你的看法
“结构体初始化列表” 指的是啥?
A():a(1),b(2) {} 这个吗?
还是这个:
A a{1, 2};
1
不要轻信任何约定。
您的意思是标准规范没人遵守?
各种编译器都还是朝着完全遵守标准走的。知道是符合标准的代码,各家编译器行为都会一致的。
否则就没有正确的代码了。
标准也是人定的,是人就会出错。不轻信,不是不信。
1
不要轻信任何约定。
您的意思是标准规范没人遵守?
各种编译器都还是朝着完全遵守标准走的。知道是符合标准的代码,各家编译器行为都会一致的。
否则就没有正确的代码了。标准也是人定的,是人就会出错。不轻信,不是不信。
1 标准总是对的
2 假如标准错了,请参考第一条
5
@fefe82
你对标准好像很有研究,说一下你的看法
4楼已经引过标准了,C99 6.7.8 Initialization / 20 ,不重复了。
1
不要轻信任何约定。
您的意思是标准规范没人遵守?
各种编译器都还是朝着完全遵守标准走的。知道是符合标准的代码,各家编译器行为都会一致的。
否则就没有正确的代码了。标准也是人定的,是人就会出错。不轻信,不是不信。
1 标准总是对的
2 假如标准错了,请参考第一条
在现实世界:
1. 1+1从来就没有真正=2过!
2. 假如你发现这次好象1+1=2了,请参考第1条。
1
但是有些编辑器,在debug版本的时候会增加一个做初始化的动作,
在release版本就没有。
所以有些时候我们会碰到debug版本是好的,release版本程序报错的情况。
2
@fefe82
你对标准好像很有研究,说一下你的看法4楼已经引过标准了,C99 6.7.8 Initialization / 20 ,不重复了。
另外本人对第9点比较困惑,里面说的unnamed members of structure objects到底是怎样的
unnamed bitfield, padding …
struct a{
char c;
// 这里可能有 3 byte padding
int i;
char c1:1;
char :7; // unnamed bit-field
// 最后可能还有几个字节 padding
};