MSVC 6.0 зажигает
Попробуй скомпилировать и запустить

#include <stdio.h>
main
{
int a=0;
float b=0;
a=(++a)+(++a)+(++a);
b=(++b)+(++b)+(++b);
printf ("%f\t%d\n",b,a);
return 0;
}

Прикольно.
9 ?


смотря какой компилятор 

<..>\qweewr\qweewr.cpp(9) : error C2065: 'a' : undeclared identifier
<..>\qweewr\qweewr.cpp(9) : error C2100: illegal indirection
а так
int (*a;
все нормально.
у меня ДЕВЯТЬ!
6
b == 6.0
a == 7
a == 7
В шестой визуалке?
В шестой - там вообще разные значения для а и b получались...
В шестой - там вообще разные значения для а и b получались...
ладно вам, я недавно пытался собрать gcc 3.3.3 с опциями --target=avr --enable-languages="c" при помощи gcc 3.3.2. Вылетел выдав
libgcc2.c:731: error: insn does not satisfy its constraints:
(insn 1006 1005 1007 0xbf2b3604 (set (mem:QI (plus:HI (reg:HI 26 r26 [30])
(const_int 1 [0x1] [2 S1 A8])
(reg:QI 24 r24 [268] 9 {*movqi} (insn_list 1005 (insn_list 1434
(nil
(expr_list:REG_DEAD (reg:QI 24 r24 [268])
(nil
libgcc2.c:731: internal compiler error: in extract_constrain_insn_cached,
at recog.c:2090
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
make[2]: *** [libgcc/./_udivmoddi4.o] Ошибка 1
make[2]: Выход из каталог `/home/shamardin/gcc/gcc-3.3.3/gcc'
make[1]: *** [stmp-multilib] Ошибка 2
make[1]: Выход из каталог `/home/shamardin/gcc/gcc-3.3.3/gcc'
make: *** [all-gcc] Ошибка 2
В седьмой, Академическое издание. (лицензионное). две девятки
я закомментировал вещественную часть, посмотрел asm
:

я закомментировал вещественную часть, посмотрел asm
:
mov DWORD PTR _a$[ebp], 0
; Line 6
mov eax, DWORD PTR _a$[ebp] // a=0, eax=0
add eax, 1 // eax=1
mov DWORD PTR _a$[ebp], eax // a=1
mov ecx, DWORD PTR _a$[ebp] // ecx=1
add ecx, 1 // ecx=2
mov DWORD PTR _a$[ebp], ecx // a=2
mov edx, DWORD PTR _a$[ebp] // edx=2
add edx, 1 // edx=3
mov DWORD PTR _a$[ebp], edx // a=3
mov eax, DWORD PTR _a$[ebp] // eax=3
add eax, DWORD PTR _a$[ebp] // eax=3+3=6
add eax, DWORD PTR _a$[ebp] // eax=6+3=9
mov DWORD PTR _a$[ebp], eax // a=9

компилируй файл с расширением .c
Вообще говоря,
т.е. вычислять инкременты он может как ему вздумается и для разных типов в разном порядке и в разные моменты времени
the order of evaluation of operands of individual operators and subexpressions of individual
expressions, and the order in which side effects take place, is unspecified.
т.е. вычислять инкременты он может как ему вздумается и для разных типов в разном порядке и в разные моменты времени
<..>\qwrtt\qwrr.c(3) : error C2065: 'a' : undeclared identifier
<..>\qwrtt\qwrr.c(3) : error C2100: illegal indirection
<..>\qwrtt\qwrr.c(3) : error C2064: term does not evaluate to a function
в случае
int (*a;
опять все нормально.
Кстати, если не ошибаюсь, то в C по умолчанию void а не int.
ошибаешься.
и вообще-то странно.
нормальная это конструкция.
могу же я объявлять:
и
почему у тебя компилятор ошибку выдаёт - странно.
и вообще-то странно.
нормальная это конструкция.
могу же я объявлять:
a,b,c;
и
f
{
blablabla
}
почему у тебя компилятор ошибку выдаёт - странно.

intel compiler 5.0
a=6
b=6
a=6
b=6
> почему у тебя компилятор ошибку выдаёт
а ты его патчил?
а ты его патчил?
Оставить комментарий
yolki
попробуйте скомпилировать:(Это "указатель на функцию, возвр. int")
У меня вылетает с ошибкой "Internal compiler error"
пофиксили в 7.0