我最近遇到了以下面试问题:
如何以高效优化的方式将数字乘以7?
我知道我可以乘以8(或左移三位)然后减去原始值:
num = (num << 3) - num;
Run Code Online (Sandbox Code Playgroud)
但还有其他解决方案.
当我尝试这个代码时它工作:
const int i = 5;
int main() {
int arry[i];
}
Run Code Online (Sandbox Code Playgroud)
即使这不起作用:
const int i = 5;
int arry[i];
int main() {
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了有关常量大小的数组的所有帖子,但我无法理解为什么arry在main中声明它有效.
我最近读到有关标签的价值,
int main(){
int value = 2;
const void *labels[] = {&&val_0, &&val_1, &&val_2};
goto *labels[value];
val_0:
printf("The value is 0\n");
goto end;
val_1:
printf("The value is 1\n");
goto end;
val_2:
printf("The value is 2\n");
goto end;
end:
return(0);
}
Run Code Online (Sandbox Code Playgroud)
我要问的是,使用此方法而不是使用switch语句或指针数组是否真的有任何性能提升?