相关疑难解决方法(0)

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

C逗号运算符的使用

你看到它用于for循环语句,但它在任何地方都是合法的语法.您在其他地方找到了什么用途,如果有的话?

c c++ comma-operator

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

什么构成C中的常量表达式的详细信息?

C定义了至少3个级别的"常量表达式":

  • 常量表达(不合格)
  • 算术常数表达式
  • 整数常量表达式

6.6第3段内容如下:

常量表达式不应包含赋值,递增,递减,函数调用或逗号运算符,除非它们包含在未评估的子表达式中.

那么这意味着1,2不是一个恒定的表达式吗?

第8段内容如下:

算术常量表达式应具有算术类型,并且只能具有整数常量,浮点常量,枚举常量,字符常量和sizeof表达式的操作数.算术常量表达式中的转换运算符只能将算术类型转换为算术类型,除非作为sizeof运算符的操作数的一部分,其结果为整数常量.

什么是操作数(union { uint32_t i; float f; }){ 1 }.f?如果1是操作数,那么这可能是一个算术常量表达式,但如果{ 1 }是操作数,则显然不是.

编辑:另一个有趣的观察:7.17第3段要求结果是offsetof类型的整数常量表达式size_t,但offsetof据我所知,标准实现不需要是标准的整数常量表达式.这当然是可以的,因为允许实现(在6.6第10段下)接受其他形式的常量表达式,或者实现offsetof__builtin_offsetof而不是通过指针减法.但是,这种观察的本质是,如果你想offsetof在需要整数常量表达式的上下文中使用,你真的需要使用实现提供的宏而不是自己的.

c standards constants constant-expression

9
推荐指数
1
解决办法
1803
查看次数

将逗号分隔的多个整数分配给C中的int - 为什么这样做?做什么的?

我在考试中看到了这一点,当我尝试时,我很惊讶.我在网上尝试过,它也有效.所以我认为这是C语言.

为什么这样?这种赋值语法的用例是什么?

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
    int i = (1,2,3,4,5);
    printf("%d", i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c variable-assignment

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

常量表达式和不可修改的左值之间有什么区别?

来自C in a Nutshell:

常量表达式

编译器识别源代码中的常量表达式,并用它们的值替换它们.结果常量值必须可以在表达式的类型中表示.只要允许使用简单常量,就可以使用常量表达式.

常量表达式中的运算符遵循与其他表达式中相同的规则.但是,因为常量表达式是在转换时计算的,所以它们不能包含修改变量的函数调用或操作,例如赋值.

  1. 什么是常量表达式?它没有定义常量表达式

  2. 常量表达式和不可修改的左值之间有什么区别(例如数组名​​称,已声明的左值const)

  3. 常量表达式总是非左值吗?

  4. 不可修改的左值是否是常量表达式?

c

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

逗号运算符是什么意思?

我之前已经声明了变量及其值,但之前我从未在一行中完成过.

如果我写

A, B = 0.0, 2;
Run Code Online (Sandbox Code Playgroud)

这是否意味着

A = 0 
Run Code Online (Sandbox Code Playgroud)

B = 2? 
Run Code Online (Sandbox Code Playgroud)

c variable-assignment

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

逗号(,)运算符抑制C中括号的优先级

我刚开始读C

情况:

x =(y = 3,(z = ++ y + 2)+ 5)

首先评估y = 3然后评估(z = ++ y + 2)

我的问题 :

首先应该评估(z = ++ y + 2),因为逗号(,)的优先级远小于括号

我的思维方式:

  1. 由于优先顺序,我们选择外括号

  2. 然后我们需要评估括号

  3. 在这个(括号)下,我再次开始应用优先规则

  4. 所以我先拿内支架进行评估

PS:

这不是重复

我已经通过这些链接但仍然无法理解

C语言中逗号运算符的行为

C逗号运算符

逗号运算符是做什么的?

https://docs.microsoft.com/en-us/cpp/cpp/comma-operator

C逗号运算符的使用

https://en.wikipedia.org/wiki/Comma_o​​perator

c

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