Quantcast
Channel: Why are these constructs using pre and post-increment undefined behavior? - Stack Overflow
Browsing latest articles
Browse All 16 View Live

Answer by Persixty for Why are these constructs using pre and post-increment...

The key to understanding this is that the value of the expression i++ is i and it's effect is to add 1 to i (i.e. store the value i+1 in the variable i) but that does not mean that the store will take...

View Article


Answer by Steve Summit for Why are these constructs using pre and...

Your question was probably not, "Why are these constructs undefined behavior in C?". Your question was probably, "Why did this code (using ++) not give me the value I expected?", and someone marked...

View Article

Answer by alinsoar for Why are these constructs using pre and post-increment...

A good explanation about what happens in this kind of computation is provided in the document n1188 from the ISO W14 site.I explain the ideas.The main rule from the standard ISO 9899 that applies in...

View Article

Answer by Mohamed El-Nakeep for Why are these constructs using pre and...

The reason is that the program is running undefined behavior. The problem lies in the evaluation order, because there is no sequence points required according to C++98 standard ( no operations is...

View Article

Answer by Antti Haapala -- СлаваУкраїні for Why are these constructs using...

While the syntax of the expressions like a = a++ or a+++ a++ is legal, the behaviour of these constructs is undefined because a shall in C standard is not obeyed. C99 6.5p2:Between the previous and...

View Article


Answer by P.P for Why are these constructs using pre and post-increment...

Often this question is linked as a duplicate of questions related to code likeprintf("%d %d\n", i, i++);or printf("%d %d\n", ++i, i++);or similar variants.While this is also undefined behaviour as...

View Article

Answer by haccks for Why are these constructs using pre and post-increment...

Most of the answers here quoted from C standard emphasizing that the behavior of these constructs are undefined. To understand why the behavior of these constructs are undefined, let's understand these...

View Article

Answer by Steve Summit for Why are these constructs using pre and...

Another way of answering this, rather than getting bogged down in arcane details of sequence points and undefined behavior, is simply to ask, what are they supposed to mean?What was the programmer...

View Article


Answer by TomOnTime for Why are these constructs using pre and post-increment...

In https://stackoverflow.com/questions/29505280/incrementing-array-index-in-c someone asked about a statement like:int k[] = {0,1,2,3,4,5,6,7,8,9,10};int i = 0;int num;num = k[++i+k[++i]] +...

View Article


Answer by Nikhil Vidhani for Why are these constructs using pre and...

The C standard says that a variable should only be assigned at most once between two sequence points. A semi-colon for instance is a sequence point. So every statement of the form:i = i++;i =...

View Article

Answer by Shafik Yaghmour for Why are these constructs using pre and...

The behavior can't really be explained because it invokes both unspecified behavior and undefined behavior, so we can not make any general predictions about this code, although if you read Olve...

View Article

Answer by supercat for Why are these constructs using pre and post-increment...

While it is unlikely that any compilers and processors would actually do so, it would be legal, under the C standard, for the compiler to implement "i++" with the sequence:In a single operation, read...

View Article

Answer by badp for Why are these constructs using pre and post-increment...

Just compile and disassemble your line of code, if you are so inclined to know how exactly it is you get what you are getting.This is what I get on my machine, together with what I think is going on:$...

View Article


Answer by Christoph for Why are these constructs using pre and post-increment...

I think the relevant parts of the C99 standard are 6.5 Expressions, §2Between the previous and next sequence point an object shall have its stored value modified at most once by the evaluation of an...

View Article

Answer by unwind for Why are these constructs using pre and post-increment...

C has the concept of undefined behavior, i.e. some language constructs are syntactically valid but you can't predict the behavior when the code is run.As far as I know, the standard doesn't explicitly...

View Article


Why are these constructs using pre and post-increment undefined behavior?

#include <stdio.h>int main(void){ int i = 0; i = i+++++i; printf("%d\n", i); // 3 i = 1; i = (i++); printf("%d\n", i); // 2 Should be 1, no ? volatile int u = 0; u = u+++++u; printf("%d\n", u);...

View Article
Browsing latest articles
Browse All 16 View Live