Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C:使用(;)有什么好处吗?_C - Fatal编程技术网

C:使用(;)有什么好处吗?

C:使用(;)有什么好处吗?,c,C,我找到了char*strchr const char*string的这个实现,int c;: 但对我来说,这相当于做以下事情,这将更容易阅读: while (*string != c && *string != '\0') string++; return (*string == c) ? ((char *) string) : (NULL); 我认为libc有理由实施第一个。但是,任何人都知道它背后的原因是什么?是的,当您将警告级别提高到最大值时,Visual Stud

我找到了char*strchr const char*string的这个实现,int c;:

但对我来说,这相当于做以下事情,这将更容易阅读:

while (*string != c && *string != '\0')
  string++;

return (*string == c) ? ((char *) string) : (NULL);

我认为libc有理由实施第一个。但是,任何人都知道它背后的原因是什么?

是的,当您将警告级别提高到最大值时,Visual Studio不喜欢while1,特别是当您要求它将警告视为错误时,但对于;;是可以的

是的,当您将警告级别提高到最大值时,Visual Studio不喜欢while1,特别是当您要求它将警告视为错误时,但对于;;,它是可以的

如果是真的呢?+1。有关信息,Visual Studio警告为条件表达式为常量,也适用于whiletrue@TheBlastOne在这种情况下,两个非零常数之间有什么区别?我看不到任何区别。我问是否会有。正如西蒙斯所说,根本没有。@TheBlastOne我也没有。为了检查条件表达式是否为0以及是否为常量,它们是否相同。如果为true,则如何?+1。有关信息,Visual Studio警告为条件表达式为常量,也适用于whiletrue@TheBlastOne在这种情况下,两个非零常数之间有什么区别?我看不到任何区别。我问是否会有。正如西蒙斯所说,根本没有。@TheBlastOne我也没有。为了检查条件表达式是否为0以及是否为常量,它们是否相同。从长远来看,这可能是一种使代码更易于优化的方法,方法是将其本地化一点,并将同一表达式的结果*字符串更接近上次使用。如果您真的想知道,将这两个代码分别放在测试项目中的不同函数中,并在不同的优化级别比较生成的汇编代码。这可能会使他们的版本优化得更好?从长远来看,这可能是一种使代码更易于优化的方法,方法是将代码本地化一点,并将同一表达式的result*字符串重新使用到与上次使用更接近的位置。如果您真的想知道,请将这两个代码放在一个测试项目中的不同函数中,并在不同的优化级别比较生成的汇编代码。也许他们的版本优化得更好?
while (*string != c && *string != '\0')
  string++;

return (*string == c) ? ((char *) string) : (NULL);