相关疑难解决方法(0)

模糊的C++语法

可能重复:
C++逗号运算符

大约一年前,我在我正在编写的编码项目中注意到一些模糊的语法:

table_value = table_index += 2, valueFromTable(table_index);
Run Code Online (Sandbox Code Playgroud)

有没有人认识到这一点?它就像一个带有附加声明的作业.这是在我们的整个跨平台编译器套件中编译的,所以我很确定它有效的C++,但我从未见过类似的东西.

任何见解将不胜感激.

Gearoid

编辑:继承人一些工作代码:

#include <iostream>
using namespace std ;

int valueFromTable(int a) { return a ; }

int main()
{
  int table_index = 0 ;
  int table_value = table_index += 2, valueFromTable(12);
  cout<<table_value<<endl;
  return 0 ;
}
Run Code Online (Sandbox Code Playgroud)

c++ syntax

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

c ++中的逗号运算符和逗号分隔符

可能重复:
当所有逗号运算符都不作为逗号运算符时?

什么时候逗号(,)表现为运算符?它什么时候表现为分隔符?它的后果是什么.如果可能,请为两者提供小例子.

c++ comma-operator

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

无法理解输出的原因

我正在运行代码段.但我无法理解它产生的代码和输出.

#include <stdio.h>
int main()  
{ 
  int a, b,c, d;    
  a=3;    
  b=5;    
  c=a,b;    
  d=(a,b);      
  printf("c = %d" ,c);    
  printf("\nd = %d" ,d);    
  return 0;
}  
Run Code Online (Sandbox Code Playgroud)

该程序的输出是:

c=3
d=5
Run Code Online (Sandbox Code Playgroud)

我不知道输出是怎么来的?

c

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

while 循环是否有两个参数?

我的女士给了我一个问题要解决。预测以下代码的输出。

#include <stdio.h>
int main()
{
    int i = 0, j = 0;
    printf("Output is : ");
    while (i < 5, j < 10)    // Doubt: how does while accept 2 arguments?? and how it works??
    {
        i++;
        j++;
    }
    printf("%d, %d\n", i, j);
}
Run Code Online (Sandbox Code Playgroud)

我以为是语法错误。但是当我尝试运行时,它给了我输出。

Output is : 10, 10
Run Code Online (Sandbox Code Playgroud)

但是如何?谁能解释一下?

但是如果我删除第一个 printf 语句printf("Output is : ");并运行它,我的防病毒软件会给我一个Trojan检测到a 的警报。但是它怎么变成了Trojan

c c++ g++ while-loop

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

三元和逗号运算符

int a,b;
a = 1 ? 1,2 : 3,4; // a = 2
b = 0 ? 1,2 : 3,4; // b = 3
Run Code Online (Sandbox Code Playgroud)

逗号运算符总是返回逗号的右侧,但是如果我们对变量赋值,则返回左侧,除非我们使用().那么第一个表达式如何赋予2.

我认为它是a = 1,2所以它应该是1但实际上a = 2.

为什么?

c c++ ternary-operator comma-operator

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

逗号运算符的局限性

我已经阅读了这个问题,我想补充说,使用逗号运算符无法完成的事情是什么.这让我很困惑,因为我能做到这一点:

int arr[3];
arr[0]=1,arr[1]=2,arr[2]=3;
Run Code Online (Sandbox Code Playgroud)

但当我这样做时:

int arr[3],arr[0]=1,arr[1]=2,arr[2]=3;
Run Code Online (Sandbox Code Playgroud)

它给了我一个编译器错误.

我想问一下逗号运算符在实际操作中的局限性是什么?

c c++ comma-operator

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

如何在C中评估以下代码?

我遇到了一个代码片段,其中使用了一个语句int k=(a++,++a).我不明白这是什么类型的陈述(a++,++a)以及如何评估它.为什么在这里使用支架?这是函数调用吗?

这是代码.

#include <stdio.h>
int main(void) {
    int a=5;
    int k=(a++,++a);
    printf("%d\n",k);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是7 - 为什么?

c

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

C ++中带逗号的表达式中的执行顺序

据我了解,该术语j = i++i在语句之前执行

j = i, ++i;.

C++ 标准是否保证j = i++i在循环之前执行

for (auto i = std::next(begin), j = begin; i!= end; j= i, ++i)?

c++

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

存储(x,y)与集合坐标

我需要帮助在一组中存储(x,y)坐标组.我存储的方式是

set<int> s;
s.insert( (1, 1) );
s.insert( (1, 3) );
s.insert( (3, 1) );
s.insert( (3, 3) );

for (auto x: s) {
     cout << x << endl;
}
Run Code Online (Sandbox Code Playgroud)

但它不会打印出(1,1),(1,3)....而是打印出1,3.

我对c ++很新,所以如果有人能给我建议如何用一组存储这些值,我将不胜感激!

c++

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

什么是“自动asd =(2,3,4,5)”;做?

一个快速的问题,这在c ++中起什么作用;

auto asd = (1,2,3,4,5);
Run Code Online (Sandbox Code Playgroud)

注意:这确实会发出错误

这是一堂课吗?如果它是数据结构,类或数组,可以告诉我如何获取单个元素值;

当我cout << asd; 它总是返回最后一个数字,在这种情况下为5

提前致谢

c++

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

标签 统计

c++ ×8

c ×5

comma-operator ×3

g++ ×1

syntax ×1

ternary-operator ×1

while-loop ×1