Tag: 未定义行为的

未定义的行为如何未定义?

我不确定我是否理解未定义的行为会危害程序的程度。 比方说,我有这个代码: #include <stdio.h> int main() { int v = 0; scanf("%d", &v); if (v != 0) { int *p; *p = v; // Oops } return v; } 这个程序的行为是不是只针对v为非零的情况定义,或者即使v是零也不定义?

近乎恒定的时间旋转,不违反标准

我有一个时间试图想出一个恒定的时间旋转,不违反C / C ++标准。 问题是边缘/angular落情况,在algorithm中调用操作,这些algorithm不能改变。 例如,下面是来自Crypto ++并执行GCC ubsan下的testing工具(即g++ fsanitize=undefined ): $ ./cryptest.exe v | grep runtime misc.h:637:22: runtime error: shift exponent 32 is too large for 32-bit type 'unsigned int' misc.h:643:22: runtime error: shift exponent 32 is too large for 32-bit type 'unsigned int' misc.h:625:22: runtime error: shift exponent 32 is too large for 32-bit […]