[Bug c/42799] New: Variable unexpectedly set to 0 because a scanf()

2010-01-19 Thread adriyetichaves at gmail dot com
I'm learning C, so it's possible there's a reason for this, but I've made a lot
of tests to find out that in my source code a variable (called "q_num") changes
from 3 to 0 just because of a scanf().

I tested the code with these lines:
...
  printf("1. %d\n",q_num);
  p=scanf("%d",&idade);
  printf("2. %d\n",q_num);
...

And results in:
1. 3  // Value dynamicly set before by a function
15// Just the value entered to the scanf()
2. 0  // Value after the scanf(), expected a 3 again

I'll attach complete source code.


-- 
   Summary: Variable unexpectedly set to 0 because a scanf()
   Product: gcc
   Version: 4.4.2
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: c
    AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: adriyetichaves at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42799



[Bug c/42799] Variable unexpectedly set to 0 because a scanf()

2010-01-19 Thread adriyetichaves at gmail dot com


--- Comment #1 from adriyetichaves at gmail dot com  2010-01-19 09:59 
---
I've simplified the code, step by step (though that removing functions would
change the result), but this simple code still gets the same error:
#include

int main(void)
{
  unsigned short int q_num, idade, p, dimension;

  q_num=3;

//  dimension=q_num; This would fix the bug
  printf("1. %d\n",q_num);
  p=scanf("%d",&idade);
  printf("2. %d\n",q_num);

  return -1;

}

About the output of gcc ($ gcc -v -save-temps -o temp bugcode.c ):

Using built-in specs. 
Target: i686-pc-linux-gnu 
Configured with: ../configure --prefix=/usr --enable-shared
--enable-languages=c,c++,fortran,objc,obj-c++,ada --enable-threads=posix
--mandir=/usr/share/man --infodir=/usr/share/info --enable-__cxa_atexit
--disable-multilib --libdir=/usr/lib --libexecdir=/usr/lib --enable-clocale=gnu
--disable-libstdcxx-pch --with-tune=generic 
Thread model: posix 
gcc version 4.4.2 20091208 (prerelease) (GCC)   
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'temp' '-mtune=generic' 
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.2/cc1 -E -quiet -v bugcode.c -mtune=generic
-fpch-preprocess -o bugcode.i
ignoring nonexistent directory
"/usr/lib/gcc/i686-pc-linux-gnu/4.4.2/../../../../i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.2/include
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.2/include-fixed
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'temp' '-mtune=generic'
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.2/cc1 -fpreprocessed bugcode.i -quiet
-dumpbase bugcode.c -mtune=generic -auxbase bugcode -version -o bugcode.s
GNU C (GCC) version 4.4.2 20091208 (prerelease) (i686-pc-linux-gnu)
compiled by GNU C version 4.4.2 20091208 (prerelease), GMP version
4.3.1, MPFR version 2.4.1.
GGC heuristics: --param ggc-min-expand=98 --param ggc-min-heapsize=128032
Compiler executable checksum: caa9064c9b58d9d704202d766b06d9de
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'temp' '-mtune=generic'
 as -V -Qy -o bugcode.o bugcode.s
GNU assembler version 2.20.0 (i686-pc-linux-gnu) using BFD version (GNU
Binutils) 2.20.0.20091101
COMPILER_PATH=/usr/lib/gcc/i686-pc-linux-gnu/4.4.2/:/usr/lib/gcc/i686-pc-linux-gnu/4.4.2/:/usr/lib/gcc/i686-pc-linux-gnu/:/usr/lib/gcc/i686-pc-linux-gnu/4.4.2/:/usr/lib/gcc/i686-pc-linux-gnu/:/usr/lib/gcc/i686-pc-linux-gnu/4.4.2/:/usr/lib/gcc/i686-pc-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/i686-pc-linux-gnu/4.4.2/:/usr/lib/gcc/i686-pc-linux-gnu/4.4.2/:/usr/lib/gcc/i686-pc-linux-gnu/4.4.2/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'temp' '-mtune=generic'
 /usr/lib/gcc/i686-pc-linux-gnu/4.4.2/collect2 --eh-frame-hdr -m elf_i386
--hash-style=both -dynamic-linker /lib/ld-linux.so.2 -o temp
/usr/lib/gcc/i686-pc-linux-gnu/4.4.2/../../../crt1.o
/usr/lib/gcc/i686-pc-linux-gnu/4.4.2/../../../crti.o
/usr/lib/gcc/i686-pc-linux-gnu/4.4.2/crtbegin.o
-L/usr/lib/gcc/i686-pc-linux-gnu/4.4.2 -L/usr/lib/gcc/i686-pc-linux-gnu/4.4.2
-L/usr/lib/gcc/i686-pc-linux-gnu/4.4.2/../../.. bugcode.o -lgcc --as-needed
-lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed
/usr/lib/gcc/i686-pc-linux-gnu/4.4.2/crtend.o
/usr/lib/gcc/i686-pc-linux-gnu/4.4.2/../../../crtn.o


-- 

adriyetichaves at gmail dot com changed:

   What|Removed |Added

 CC||adriyetichaves at gmail dot
   ||com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42799



[Bug c/42799] Variable unexpectedly set to 0 because a scanf()

2010-01-19 Thread adriyetichaves at gmail dot com


--- Comment #2 from adriyetichaves at gmail dot com  2010-01-19 10:04 
---
Same code compiled in other compiler (Turbo C++) works.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42799