小编min*_*low的帖子

编译器是否会优化“strnlen(mystring, 32) > 2”,以便在运行长度超过 2 时立即停止循环?

现代编译器(或者也许自 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(...)会爆发?

  • 如果我没有预先分配字符串长度会有什么影响吗?
  • 如果我从IF内部表达式中删除括号,会有什么影响吗?
  • 如果我将操作数和运算符切换为 ,会有影响吗<

c optimization

7
推荐指数
1
解决办法
142
查看次数

标签 统计

c ×1

optimization ×1