sequence-points

    2熱度

    1回答

    Cosider在以下表達式中的序列點 i = (++i,i++,i); 如果我是正確執行的步驟將是如下: 1) ++i, i++ 2) step1,i 3) i = step2 對於第1步中的評估,對於被稱爲定義的構造(因爲在評估逗號運算符後有一個序列點),i的值應該只修改一次。但我認爲情況並非如此。因此它應該是未定義的。 請參閱此answer。這裏上面的表達被稱爲定義。我錯過了什

    9熱度

    2回答

    既然新的C++ 11標準已經對序列點的描述進行了改變,我試圖找出C++ 03和C++ 11之間究竟發生了什麼變化。 特別是,有什麼情況下,看起來相同的代碼在C++ 11中有一個序列點,但不在C++ 03中?

    3熱度

    2回答

    在我對一個問題here的回答中,我解釋了在與語句return同一行上的全局變量上使用postfix ++時發生的情況。 C11的信息性附錄C指出緊接在return之後有一個序列點,並且涉及規範性章節6.8.6.4,其中沒有找到關於序列點的文本。 在C標準中,我可以找到規範性文本,說明在return陳述後面有一個序列點? (我只找到規範文本,說明這個庫函數,作爲一個特殊的情況下,在7.1.4/3)

    4熱度

    1回答

    C#: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) {

    6熱度

    4回答

    將變量聲明爲'volatile'意味着直接從內存位置讀取/寫入,而不是從寄存器變量中讀取/寫入。我有'序列點'的知識。但我不明白標題中提到的聲明。 有人可以解釋一樣,並給出一些代碼片段嗎?

    4熱度

    2回答

    我試圖讓我對C中序列點的理解 - 只是想檢查一下。目前,我認爲(1)是不確定的,而(2)僅僅是沒有說明的,因爲在(2)中,在評估參數g和h(因此我們不修改i兩次序列點),但f參數的評估順序仍未明確。我的理解是否正確? #include <stdio.h> int g(int i) { return i; } int h(int i) { return i; }

    2熱度

    1回答

    我有一個父類,需要兩個引用,可能實際上可能引用或不引用相同的東西。在這種情況下,當它們是相同的,我得到了我的子類的初始化列表的順序點警告: class A { public: A(int) {} private: A() {} }; class Parent { public: Parent(A&, A&) {} }; c

    8熱度

    3回答

    我知道,寫東西像 ++a = a++; 不僅是不可讀的,而且違反了C/C++序列點。 這些限制來自哪裏?在發現錯誤之前,如何看待這些「問題」?

    6熱度

    1回答

    考慮下面的C程序: int i = 0; int post_increment_i() { return i++; } int main() { i = post_increment_i(); return i; } 關於2011版的C標準(稱爲C11),下面的替代方案中的哪一個真實的: C11保證主返回0. C11保證主返回0或1. 根據C11,此程序的行爲未定

    3熱度

    2回答

    序列點的概念還有就是GCC產生結果的代碼片段我沒想到: (我用gcc版本4.6.1的Ubuntu/Linaro的4.6.1 -9ubuntu3爲目標的i686-Linux的GNU) [test.c的] #include <stdio.h> int *ptr; int f(void) { (*ptr)++; return 1; } int main() {