Tag: 语言律师

访问不活动的联盟成员和未定义的行为?

我的印象是,除了最后一组之外,访问一个union成员是UB,但我似乎无法find一个可靠的参考(除了答案是UB,但没有任何标准的支持)。 那么,这是不确定的行为?

什么时候调用null实例的成员函数会导致未定义的行为?

考虑下面的代码: #include <iostream> struct foo { // (a): void bar() { std::cout << "gman was here" << std::endl; } // (b): void baz() { x = 5; } int x; }; int main() { foo* f = 0; f->bar(); // (a) f->baz(); // (b) } 我们期望(b)崩溃,因为空指针没有对应的成员x 。 在实践中, (a)不会因为this指针从未被使用而崩溃。 因为(b)取消引用this指针( (*this).x = 5; ),并且this为null,所以程序进入未定义的行为,因为dereferencing的null总是被认为是未定义的行为。 (a)是否会导致未定义的行为? […]

在CSS Flexbox中,为什么没有“justify-items”和“justify-self”属性?

考虑柔性容器的主轴和交叉轴: 来源: W3C 要沿主轴alignment弹性项目,有一个属性: justify-content 要沿着横轴alignment弹性项目,有三个属性: align-content align-items align-self 在上图中,主轴是水平的,横轴是垂直的。 这些是flex容器的默认方向。 但是,这些方向可以很容易地与flex-direction特性互换。 /* main axis is horizontal, cross axis is vertical */ flex-direction: row; flex-direction: row-reverse; /* main axis is vertical, cross axis is horizontal */ flex-direction: column; flex-direction: column-reverse; (横轴始终垂直于主轴。) 我在描述斧头的工作方面的重点是,在任何一个方向似乎都没有什么特别之处。 主轴,横轴,重要性和flex-direction都相等,方便来回切换。 那么为什么十字轴会有两个额外的alignment属性? 为什么align-content和align-items合并到主轴的一个属性中? 为什么主轴不能得到一个justify-self财产? 这些属性将是有用的scheme: 将柔性物品放置在柔性容器的拐angular处 #box3 { align-self: flex-end; justify-self: flex-end; } […]

一个正面的lambda:'+ {}' – 这是什么巫术?

在堆栈溢出的问题重新定义在C ++ 11不允许的lambdas,为什么? ,一个小程序不能编译: int main() { auto test = []{}; test = []{}; } 问题得到解答,一切似乎都很好。 然后来到Johannes Schaub ,做了一个有趣的观察 : 如果你在第一个lambda之前加上+ ,神奇地开始工作。 所以我很好奇:为什么下面的工作? int main() { auto test = +[]{}; // Note the unary operator + before the lambda test = []{}; } 它用GCC 4.7+和Clang 3.2+编译得很好。 代码标准是否符合?

Fortran:整数* 4与整数(4)与整数(种类= 4)

我试图学习Fortran,我看到很多不同的定义被传递,我想知道他们是否试图完成同样的事情。 以下是什么区别? integer*4 integer(4) integer(kind=4)