预增量不返回左值

时间:2019-04-25 13:08:09

标签: c++

Option Explicit

Sub findvalues()

    Dim i As Long
    Dim rng As Range

    With ThisWorkbook.Worksheets("Sheet1") 'Change if needed

        Set rng = .Range("A2:A130") 'set rng to includes values from column A, rows 2:130

        For i = 2 To 130 'Loop from row 2 to 130
            'Check if the values in column C includes in the rng
            If Application.WorksheetFunction.CountIf(rng, .Range("C" & i).Value) > 0 Then
                .Range("D" & i).Value = "TRUE"
            Else
                .Range("D" & i).Value = "FALSE"
            End If

        Next i

    End With

End Sub

本文给出了// Pre-increment (or pre-decrement) #include <cstdio> int main() { int a = 10; ++a = 20; // works //printf("a = %d", ((++a)++)); getchar(); return 0; } 的工作原理,但是当我在ideone上运行时,此代码给出了错误。

https://www.geeksforgeeks.org/g-fact-40/

https://ideone.com/12DmS7

2 个答案:

答案 0 :(得分:3)

这是C和C ++之间的区别。

在C语言中,++a不是 l值,因此不能位于任务的左侧。

在C ++中可以。

据称某些编译C代码(例如MSVC)的编译器会错误地发出该构造。

答案 1 :(得分:1)

此代码在 ideone 中也很好用(请参见下面的屏幕截图)。使用C++而不是C运行它。预增量在C++中有效,但在C中产生编译错误。

enter image description here