int i = 3;
int j = (i)++;

VS

int i = 3;
int j = i ++;

上述两种情况的判断方式是否存在差异?

第一种情况等同于递增右值还是它是未定义的行为?

推荐答案

i++(i)++的行为相同.C 2018 6.5.1 5规定:

带括号的表达式是主表达式.它的类型和值与未附加主题的表达式的类型和值相同.如果未细化的表达式分别是左值、函数指示符或空表达式,则它是左值、函数指示符或空表达式.

C 1999中的措辞相同.

C++相关问答推荐

ESP32在vTaskDelay上崩溃

为什么GDB/MI进程的FIFO循环中有read()阻塞

函数的限制限定指针参数允许优化调用方函数吗?

通过描述符查找文件路径时出现问题

使用%f格式说明符打印整数值

是否定义了此函数的行为?

Printf()在C中打印终止字符之后的字符,我该如何解决这个问题?

从BIOS(8086)中读取刻度需要多少?

通过对一个大的Malloc内存进行切片来使用Malloc的内存片

c程序,让用户输入两类数字,并给出输出用户输入多少个数字

计算SIZE_MAX元素的长数组的大小

如何在MSVC中使用intSafe.h函数?

如何使crc32的结果与cksum匹配?

传递参数:C 和 C++ 中 array 与 *&array 和 &array[0] 的区别

在 C 中传递参数时出现整数溢出

为什么程序在打印每个数字之前要等待所有输入?

Makefile - 将 .o 文件放入子文件夹中

多行表达式:C 编译器如何处理换行符?

在 C 中,在故障/退出点释放分配的资源的良好编码实践是什么?

关于将十六进制常量分配给signed类型变量的说明