help-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Trouble converting unsigned long long to 'char' on armv7l


From: Ben Greear
Subject: Trouble converting unsigned long long to 'char' on armv7l
Date: Fri, 17 Apr 2015 20:46:38 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

I have an Ubuntu 14.04 system for arm7l (armhf), and I think
I have found a bug in the g++/gcc compiler.

I am expecting to see 'char c' below to end up as a negative number,
but as you can see, it does not.  x86 system shows the negative number
as expected.

Anyone have any ideas for a work-around, or proper code if mine is
buggy?



greearb@build-imx6:~/git/btbits/server$ more test.cc
#include <stdlib.h>
#include <stdio.h>

int main() {
   unsigned long long val = 0x8b;
   char c = val;
   printf("c: %d  0x%x\n", c, c);
   return 0;
}
greearb@build-imx6:~/git/btbits/server$ g++ -o test test.cc
greearb@build-imx6:~/git/btbits/server$ ./test
c: 139  0x8b
greearb@build-imx6:~/git/btbits/server$

greearb@build-imx6:~/git/btbits/server$ g++ --version
g++ (Ubuntu/Linaro 4.8.2-19ubuntu1) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.



On x86 system:

[greearb@ben-dt ~]$ g++ -o test test.cc
[greearb@ben-dt ~]$ ./test
c: -117  0xffffff8b

[greearb@ben-dt ~]$ gcc --version
gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8)


Thanks,
Ben

--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com



reply via email to

[Prev in Thread] Current Thread [Next in Thread]