c++ - subsructing getchar's return value -


suppose have file consists of single string

a1 

if write this:

char ch = getchar(); char ch1 = getchar(); cout << ch - 'a'  << " " << ch1 - '0' << endl; 

i have 0 1 in output. if write this:

cout << getchar() - 'a'  << " " << getchar() - '0' << endl; 

i have -48 49. doesnt getchar() return normal char? why result isn't same?

you're getting issue because 2 calls getchar() evaluated in unspecified order, , compiler happens evaluate rightmost 1 first.

c++ has rather loose rules regarding order of evaluation of subexpressions in expression, allow more optimisation opportunities. cout line 1 expression, following guaranteed:

  • the first getchar() evaluated before first -
  • the second getchar() evaluated before second -
  • the first - evaluated before first <<
  • the second - evaluated before third <<
  • the <<s evaluated in order left.

note there no other ordering restrictions. example, compiler free evaluate both getchar() calls , both -s before first <<. importantly, there no rule forcing first getchar() evaluated before second one.


Comments

Popular posts from this blog

python - mat is not a numerical tuple : openCV error -

c# - MSAA finds controls UI Automation doesn't -

wordpress - .htaccess: RewriteRule: bad flag delimiters -