c语言 - 函数内部的数组可以用函数的返回值初始化吗?"int arr[2]={strcmp(" "," "),strcmp(" 3 "," 5 ")};"正确吗?



静态存储类型的变量不应该被函数的返回值初始化,因为它们不被认为是常量?根据这个参数,下面的声明在c中是否有效?它编译时没有错误或警告,输出与预期一致。

#include <stdio.h>
#include <string.h>

int main ()
{
   int arr[2]={strcmp("a","a"),strcmp("3","5")};
  printf("%d,%d",arr[0],arr[1]);
}

Result 0,-1

静态变量不能用函数的返回值初始化的说法是正确的,但在您的示例中,arr不是静态变量,而是存储在堆栈中的变量,因此这段代码是完全有效的。

另一方面,写:

static int arr[2]={strcmp("a","a"),strcmp("3","5")};

相关内容

  • 没有找到相关文章