相关疑难解决方法(0)

使用指针订阅整数变量

可能重复:
在C数组中为什么这是真的?多维数组中的[5] == 5 [a]
C奇怪的数组语法

今天我遇到了这个博客.最吸引我的是这个:

int i;
i["]<i;++i){--i;}"];
Run Code Online (Sandbox Code Playgroud)

好吧,我真的不知道数组下标中奇怪的"字符串常量"的目的是什么,但我很困惑如何下标整数变量.所以我带来了这段代码:

#include <stdio.h>

int main(void) {
    int x = 10;

    printf("%d", x["\0"]); /* What is x["\0"]?! */

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

它使用MinGW和-Wall -ansi -pedantic编译时没有错误.然后该代码输出:105.

谁能解释这个?

编辑:我发现下标中必须有一个指针,否则我会得到编译时错误.

c arrays subscription

3
推荐指数
2
解决办法
1052
查看次数

谁能解释一下这个特定的print语句在for循环中做了什么?

int a[] = { 1, 2, 3, 4, 5 };
const int N = sizeof(a)/sizeof(a[0]);
cout<<N<<endl;

for (int i = 0; i < N; ++i)
{
    cout << (i[a-i]%N)[a+i-1] << " ";
}
Run Code Online (Sandbox Code Playgroud)

//它打印1 2 3 4 5,即我不理解的数组是cout <<(i [ai]%N)[a + i-1] <<"";

c++ arrays

3
推荐指数
1
解决办法
201
查看次数

一元和数字文字的语义

什么是一元 - 并在这里做?

int * a = 1990; 
int result = &5[a]; 
Run Code Online (Sandbox Code Playgroud)

如果您要打印,result您将获得2010年的价值.

您必须使用-fpermissive它编译它,否则它将因错误而停止.

c c++ pointers

3
推荐指数
2
解决办法
154
查看次数

我如何["字符串"]作为条件陈述?

检查IOCCC中的这个混淆代码.我试图理解这一点.

int i;main(){for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hell\
o, world!\n",'/'/'/'));}read(j,i,p){write(j/p+p,i---j,i/i);}
Run Code Online (Sandbox Code Playgroud)

手段:

int i;
main()
{
    for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hello, world!\n",'/'/'/'));
}
read(j,i,p)
{
    write(j/p+p,i---j,i/i);
}
Run Code Online (Sandbox Code Playgroud)

请解释一下: i["]<i;++i){--i;}"]

这如何作为一个条件陈述?

c obfuscation for-loop conditional-statements

3
推荐指数
1
解决办法
91
查看次数

C中的数组是指针的语法糖吗?

我们来看看下面的代码:

int arr[n];
// s.t. i<n
arr[i] = 12;
// s.t. i<n 
*(arr + i) = 12;
Run Code Online (Sandbox Code Playgroud)

arr[i]一种合成糖*(arr+ i)吗?

c syntactic-sugar

3
推荐指数
2
解决办法
924
查看次数

数组操作结果

有人可以让我更深入地了解为什么这段代码的工作方式

#include <stdio.h>

int main()
{
    int a[5] = {1,2,3,4,5};
    int i;
    for(i=0;i<5;i++)
    {
     printf("%d,%d \n",i[a],i[a]++);
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

结果是

2,1 
3,2 
4,3 
5,4 
6,5 
Run Code Online (Sandbox Code Playgroud)

谢谢

c arrays

2
推荐指数
1
解决办法
149
查看次数

矢量下标标准C/C++?

一个补丁被发布到gcc,它提供了一个叫做向量订阅g ++的东西(gcc已经有了它).

如果a是一个数组并且i是一个int则i[a]是合法的并且等于a[i].

double a[]{0.0, 1.0, 2.0, 3.0}; // C++11 style but would work in C++98 style too.
assert(a[2] == 2.0);
assert(2[a] == 2.0);
Run Code Online (Sandbox Code Playgroud)

那么,这是合法的标准C/C++还是gcc扩展?

实际上,谷歌显示MS Developer Studio也有这个.我查看了C++标准并没有看到它.

c++ gcc g++

2
推荐指数
2
解决办法
288
查看次数

C/C++:使用int i [3],为什么i [2]与2 [i]相同?

我才知道这个伎俩.

在C++中:

#include <iostream>
using namespace std;

int main() {
    int i[3]={5,7,11};
    cout << 2[i];
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在C:

#include <stdio.h>
int main(void) 
{  
    int i[3]={5,7,11};
    printf("%d", 2[i]);
    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

是的,这些是允许的,两个输出都是11.

为什么我[2]可以表达为2 [i]?

c c++ arrays

2
推荐指数
1
解决办法
161
查看次数

&a [i]和a + i之间有什么区别,其中a是int*?

显然,两者&a[i]a+i返回int*.问题是它们是否以相同的方式执行,因为有两个运算符,&a[i]但只有一个运算符a+i

c language-lawyer

2
推荐指数
2
解决办法
135
查看次数

*(arr -1) 与 arr[-1] 相同吗?

我正在尝试解决这个问题,它有一个向量,并且有一个导致负索引的指针。我想知道 C 是否会忽略它并将其视为正数,或者它在向量中向后移动,例如 -1 是数组的最后一个元素。

c

2
推荐指数
1
解决办法
229
查看次数