相关疑难解决方法(0)

C++中的" - >"运算符是什么?

看完后隐藏功能和C++/STL的暗角comp.lang.c++.moderated,我完全惊讶的是,下面的代码片断编译并在两个Visual Studio 2008和G ++ 4.4的工作.

这是代码:

#include <stdio.h>
int main()
{
    int x = 10;
    while (x --> 0) // x goes to 0
    {
        printf("%d ", x);
    }
}
Run Code Online (Sandbox Code Playgroud)

我假设这是C,因为它也适用于GCC.标准中定义了哪里,它来自何处?

c++ code-formatting standards-compliance operators

8590
推荐指数
27
解决办法
75万
查看次数

你能在C编程中有三个减号吗?这是什么意思?

可能重复:
为什么+++++ b在C中不起作用?

我从David Simon的"嵌入式软件入门"第113页得到了这个.

我在下面看到这句话:

iHoursTemp = iHoursTemp + iZoneNew ---iZoneOld;
Run Code Online (Sandbox Code Playgroud)

你能真的在这条线上有三个减号吗?三重减号是什么意思?

我相信这是一个C编程声明.

c c++

56
推荐指数
4
解决办法
4538
查看次数

修改Duff设备的语法 - 这是合法的C/C++吗?

就在昨晚,我第一次遇到了好奇的Duff设备.我一直在做一些阅读,我不认为这是令人生畏的理解.我很好奇的是奇怪的语法(来自维基百科):

register short *to, *from;
register int count;
{
  register int n = (count + 7) / 8;
  switch(count % 8) {
  case 0: do {    *to = *from++;
  case 7:         *to = *from++;
  case 6:         *to = *from++;
  case 5:         *to = *from++;
  case 4:         *to = *from++;
  case 3:         *to = *from++;
  case 2:         *to = *from++;
  case 1:         *to = *from++;
    } while(--n > 0);
  }
}
Run Code Online (Sandbox Code Playgroud)

我正在阅读switch语句的C++标准定义(如果过时,请告诉我,我不熟悉Open-Std.org).据我所知,case语句只是简化的switch语句,供switch语句使用.

开关本身完全忽略嵌套的do-while,循环忽略case语句.由于开关在循环内部跳转,因此执行循环.开关用于覆盖剩余部分(从8除以),循环处理可被整除的部分.这一切都有道理.

我的问题是为什么笨拙的语法?在我看来,可以编写循环使得所有case语句都包含在其中,是吗?我在标准中没有看到禁止此行为的任何内容,并且它在GCC 4.7下正确编译,以下被认为是合法的吗?

register short …
Run Code Online (Sandbox Code Playgroud)

c++ switch-statement duffs-device

8
推荐指数
1
解决办法
895
查看次数

为什么`&`用于C中的二进制AND和地址?

这个问题是为了回应C中的什么是&&&操作让我想到&被用作二进制AND和地址.

为什么这些非常不同的任务使用相同的符号?在考虑它时,@似乎是一个更好的符号.

我不认为它会在实践中引起太多问题,因为编译器可能会捕获大多数错误的用法,但它可能会创建涉及宏的代码,看起来它正在执行二进制AND而它实际上正在执行地址.

c syntax

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

什么是C中的&&&&操作

int main()
{
        int i, c;
i:
        for (i = 0; i < 3; i++) {
                c = i &&&& i;
                printf("%d\n", c);
        }
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

上面编译的程序的输出gcc

0
1
1
Run Code Online (Sandbox Code Playgroud)

如何在上述计划中评估?

c c++ linux operators gcc-warning

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

在Java中使用= +运算符?

我有以下代码:

public class Operators {
    public static void main(String[] args) {
        int i =+ 2;
        System.out.println(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

执行后,我得到以下输出:2

那么=+运营商在这里做了什么呢?

编辑:

正如一些回答,这是分配+2i,考虑下面的代码:

public class Operators {
    public static void main(String[] args) {
        int i =- -2;
        System.out.println(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以在上面的例子中,输出应该是-2.但我得到了2

所以我想,它是-(-2),它给出了2.吗?

java operators

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