相关疑难解决方法(0)

153
推荐指数
5
解决办法
3万
查看次数

何时超载逗号运算符?

我经常看到关于在C++中重载逗号运算符的问题(主要与重载本身无关,但是像序列点的概念一样),这让我想知道:

你什么时候应该重写逗号?它的实际用途有哪些例子?

我只是想不出任何我已经看到或需要的东西

foo, bar;
Run Code Online (Sandbox Code Playgroud)

在现实世界的代码中,所以我很好奇何时(如果有的话)实际使用它.

c++ function operator-overloading

64
推荐指数
10
解决办法
2万
查看次数

C逗号运算符

为什么在逗号运算符(例如下面的示例)中指定的表达式不被视为常量表达式?

例如,

int a = (10,20) ;
Run Code Online (Sandbox Code Playgroud)

当在全局范围内给出时产生错误"初始化器不是常量",尽管由逗号运算符分隔的两个表达式都是常量(常量表达式).为什么整个表达式不被视为常量表达式?为了澄清我已经阅读了','运算符在C中做了什么?C逗号运算符的使用.他们没有涉及逗号运算符的这个方面.

c expression scope comma-operator

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

为什么用逗号进行双重初始化是非法的?

我有三个代码片段.这个:

1,7; //yes, that's all the code
Run Code Online (Sandbox Code Playgroud)

编译好吧.这个:

double d = (1, 7);
Run Code Online (Sandbox Code Playgroud)

也编译好了.然而这一个:

double d = 1, 7;
Run Code Online (Sandbox Code Playgroud)

无法编译.gcc-4.3.4说

错误:数字常量之前的预期unqualified-id

和Visual C++ 10说

错误C2059:语法错误:'常量'

为何如此差异?为什么不是所有三个编译都在三个,中都具有相同的效果?

c++ comma-operator

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

为什么两种情况下的不同行为是第一 int i = 1,2,3; 和第二.int i; i = 1,2,3;

使用GCC编译器,在C程序中跟随两个运算符的情况,观察到不同的行为.

1.

 int i = 1,2,3;

 printf("%d",i);                     // this will give compile time error
Run Code Online (Sandbox Code Playgroud)

和,

2.

int i;

i = 1,2,3;

printf("%d",i);    // Its output will be 1.
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,编译器给出了错误"错误:期望标识符或'('数字常量之前'.并且在第二种情况下,没有错误,输出是1.可以在这里解释两种情况下的编译器行为吗?编译器如何?解释这两个陈述?

提前感谢您的意见.

c c++ operators

5
推荐指数
1
解决办法
656
查看次数

"int i = 1,2,3"和"int i =(1,2,3)"之间的区别 - 用逗号运算符进行变量声明

  1. int i=1,2,3;

  2. int i=(1,2,3);

  3. int i; i=1,2,3;

这些陈述有什么区别?我无法理解它.

c

4
推荐指数
1
解决办法
9191
查看次数