先判断if,再初始化变量,能提高效率???

jarod7413 2012-11-16 12:17:47
刚刚在移植读别人的一个工程,结果发现代码风格是首先判断函数的合法性,其次才初始化变量

请问走过路过的各位大大们,这样能提升程序效率吗?

例如:

int demoTest(const char *StrIn)
{
if(strlen(StrIn)<1)
{
return -1;
}

int i=0;
。。。
}
...全文
270 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
半字节 2012-11-17
  • 打赏
  • 举报
回复
引用 12 楼 myseemydog 的回复:
引用 10 楼 jarod7413 的回复:可是这造成了VC上千个错误啊... 原来的工程是用脚本编译的,而现在是要用vc集成工具来编译,那么多错误改的我手都疼了... 其实我纠结的地方就是,为什么vc要认为在函数中途声明变量就是错误呢? 确实蛋疼、蛋疼。。我当时直接就在外面套了了一对{}。改的蛋疼死了、
这是C标准的问题,C90规定一个功能块中的操作必须变量定义放在最前面。 MS貌似比较遵守标准。 GNU的编译器就比较开放,可以随时定义变量。 另外楼主的这个具体问题: 应该是不会提高效率。这个跟编译器太相关。 函数内的局部变量,都是在进入函数时直接从栈中划出来的。像楼主这种方式 执行第一步操作肯定是划出空间,第二步不出意外的话是直接初始化,然后才去判断if 当然如果编译器聪明些,可能是划出空间,再判断if 再赋值i为0 这样的话,相当于把int i=0拆开来了。 如果楼主迫切要追求效率 写成这样在不优化的情况下应该效率会高 int demoTest(const char *StrIn) { int i; if(strlen(StrIn)<1) { return -1; } i=0; 。。。 } 所以说编译器不够聪明的话,你就这么写。编译器够聪明的话,你怎么写都无所谓了。。。 不过最终与其在这里扣这点效率 ,还不如花时间注重一下代码可读性。优化的事儿 给编译器好了
myseemydog 2012-11-17
  • 打赏
  • 举报
回复
引用 10 楼 jarod7413 的回复:
可是这造成了VC上千个错误啊... 原来的工程是用脚本编译的,而现在是要用vc集成工具来编译,那么多错误改的我手都疼了... 其实我纠结的地方就是,为什么vc要认为在函数中途声明变量就是错误呢?
确实蛋疼、蛋疼。。我当时直接就在外面套了了一对{}。改的蛋疼死了、
goog_guzl 2012-11-17
  • 打赏
  • 举报
回复
引用 6 楼 zlgkaixin68 的回复:
不是效率的问题,而是,如果不检查,是为了代码更健壮
++
jarod7413 2012-11-17
  • 打赏
  • 举报
回复
可是这造成了VC上千个错误啊... 原来的工程是用脚本编译的,而现在是要用vc集成工具来编译,那么多错误改的我手都疼了... 其实我纠结的地方就是,为什么vc要认为在函数中途声明变量就是错误呢?
gohay1 2012-11-16
  • 打赏
  • 举报
回复
这个看情况了,就初始化一个int,能快到哪去,但要是初始化一个费时间的东西,你就有感受了 这个是一个习惯问题,当然这种习惯是比较好的
longburulin 2012-11-16
  • 打赏
  • 举报
回复
首先 我是菜鸟 我觉得 不是很多初始化 不多的话应该可以忽略不计吧 很多的话 当然减少时间了
AnYidan 2012-11-16
  • 打赏
  • 举报
回复
引用 6 楼 zlgkaixin68 的回复:
不是效率的问题,而是,如果不检查,是为了代码更健壮
不是效率的问题,而是为了代码更健壮
shulianghe 2012-11-16
  • 打赏
  • 举报
回复
这是代码风格问题,好的习惯。
转角天边 2012-11-16
  • 打赏
  • 举报
回复
引用 6 楼 zlgkaixin68 的回复:
不是效率的问题,而是,如果不检查,是为了代码更健壮
+1,这样写的主要目的不是为了提高效率,是为了代码更健壮
Panda_熊猫 2012-11-16
  • 打赏
  • 举报
回复
不是效率的问题,而是,如果不检查,是为了代码更健壮
dhdahai 2012-11-16
  • 打赏
  • 举报
回复
参数不合法时是效率高些 这种风格比较好
olderma 2012-11-16
  • 打赏
  • 举报
回复
只知道++i,比i++效率要高些
tag180 2012-11-16
  • 打赏
  • 举报
回复
楼上正解~~这个不会快到哪去 但是是一个更好的习惯

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧