【问题标题】:Fortran style implied do loop in C?Fortran 风格在 C 中隐含做循环?
【发布时间】:2020-12-20 12:10:05
【问题描述】:

我可以像 Fortran 一样在 C 中使用这种“隐含”的 for 循环吗?我(很高兴)在 Ubuntu 20.04 上使用 gcc。

    error: expected expression before ‘for’
      192 |    printf("e0 v0 %f %f %f %f %f %f  \n",for (unsigned i=0; i < 3; i++) e0[i],v0[i] );

感谢您的阅读!最好的季节问候!

【问题讨论】:

  • 一句话...不。您需要显式匹配6个格式说明符,但是您可以重新排列代码以将printf() inside循环,使用2个格式说明符。
  • 谢谢。我可以理解循环内部,我不希望这样,但是请您详细说明“使用 2 个格式说明符”吗?
  • 像这样printf("e0 v0"); for(int i=0; i&lt;3; i++) { printf(" %f %f", e0[i], v0[i]) }; printf("\n"); 你说你“不想这样做”,但这是方式,并且代码量大致相同。
  • 谢谢,我会保存的。我说我不想要,因为如果我有其他东西要打印,比如一些变量 a、b、c,然后是向量等,最好在 1 行中完成所有工作。谢谢!
  • 您可以随时编写辅助函数,例如print_vec3 或print_array。

标签: c for-loop printing


【解决方案1】:

不,有几个原因。

首先,语法不允许这样做。 for 循环本身是一个语句,而不是表达式,因此它不能是函数中的参数。

其次,在调用函数之前对函数参数进行全面评估,并将结果值传递给函数 - 您不能传递函数在内部执行的 表达式。

为了做你想做的事,你需要写

printf ( "e0 v0 " );
for ( int i = 0; i < 3; i++ )
  printf( "%f %f ", e[i], v[i] );
putchar( '\n' );

【讨论】:

  • 谢谢你。最欣赏。亲切的问候!
猜你喜欢
  • 1970-01-01
  • 2014-06-26
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
  • 2016-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多