【问题标题】:is there any array[a,b] syntax in c? [duplicate]c中有数组[a,b]语法吗? [复制]
【发布时间】:2023-01-27 16:23:01
【问题描述】:

在阅读有关 c 预处理器的信息时,我得到了类似 array[x=y,x+1] 的信息。在搜索了很多小时之前和之后,我都没有在 c 中看到过这种语法,但我没有找到任何有用的东西。

#include <stdio.h>

int main() {
    int arr[] = {5,10,15};
    printf("%d %d %d",arr[0,1]);
    return 0;
}

输出: 10 1762365112 1769491896

有人可以详细说明吗?

【问题讨论】:

  • 搜索“逗号运算符”。
  • printf("%d %d %d",arr[0,1]); 欢迎来到 SO。你没有从你的编译器那里得到一些警告,说你没有足够的参数用于这 3 个格式说明符吗?使用不带任何参数的 %d 会导致未定义的行为。
  • 这样的表达很少是好的代码的标志。
  • @Someprogrammerdude 好代码唱歌。糟糕的代码嘎嘎作响。 :-D

标签: arrays c preprocessor


【解决方案1】:

由于逗号运算符 (,) 在 C 中的工作方式,array[x=y,x+1] 的效果(有问题且难以阅读)是首先将 y 的值复制到 x 中,然后使用 x+1作为数组中的正常(单维、非范围或任何您期望的)索引。

(我认为没有必要讨论您的实验代码。)

请参阅逗号运算符文档的链接,由 Pignotto 在 cmets 中提供:
https://en.cppreference.com/w/c/language/operator_other#Comma_operator

【讨论】:

    猜你喜欢
    • 2018-04-17
    • 2020-04-02
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 2018-06-20
    • 2019-10-27
    • 2019-01-12
    • 2022-06-30
    相关资源
    最近更新 更多