现代编译器(或者也许自 C89 以来就已经存在)是否会在条件表达式求值期间用短路求值代码来替代下面的情况?
char mystring[32] = "this is a long line";
if((strnlen(mystring, 32)) > 2)
{
return 1;
}
Run Code Online (Sandbox Code Playgroud)
因为在处理过程中考虑了右操作数strnlen(...),并且当内部C字符串的运行长度strnlen(...)超过外部条件表达式的右操作数(在本例中为2)时,strnlen(...)会爆发?
<?