Focus on Sun
Sun Studio 11: C++ 5.8 Compiler Apr 16 2007 01:22AM
neelabhsharma1 gmail com (2 replies)
Re: Sun Studio 11: C++ 5.8 Compiler Apr 16 2007 06:05PM
Steven Leikeim (sleikeim ucalgary ca)
On Mon, Apr 16, 2007 at 01:22:07AM -0000, neelabhsharma1 (at) gmail (dot) com [email concealed] wrote:
> As per the specifications the compiler should be based on C99. But i think it still does not handle the function call strtoll(). This issue did not arise with RHL 9.0
>
> If it did the handling properly then the result of the program should not be 0.
>
>
> /*Snippet of the Code */
> #include<stdio.h>
> #include<stdlib.h>
>
> int main()
> {
> char *a = "89abcdef";
> long long int c;
> a[8] = '\0';
> c = strtoll(a, NULL, 16);
> printf("the num is %8x", c);
> return 0;
> }
>
>
> My understanding of the OS, Platform (SPARC), ofcourse C is just of a beginner and am eager to learn, please provide supporting comments..
>

This is consistent with Sun WorkShop 6 and gcc 3.4.2 (Both on Solaris/Sparc).
Gcc 3.4.5 on Linux (Intel) appears to do what you were expecting, but actually
does not. If you change the "char a..." definition to a hex value longer than
8 characters you will not see the last 8 characters on Sparc. On Intel you will
only see the last 8 characters. This is due to differences in byte ordering on
these processors.

The problem is in your printf format. %8x expects to print something of type
"int". Most current compilers specify type "int" to be the same as "long int"
which is 32 bits. "long long int" is 64 bits. What is happening here is you
are printing the first 32 bits of the argument. If you use the correctly
typed format string "%8llx", you should see the correct value printed in all
cases.

I hope this helps your understanding of what has happened here.

Steven Leikeim

--

Steven Leikeim, GSEC-Gold | We, the willing
Department of Electrical and Computer | led by the unknowing
Engineering | are doing the impossible
Schulich School of Engineering | for the ungrateful.
University of Calgary | We have done so much
Calgary, Alberta | for so long with so little
| we are now qualified
Phone: (403) 220-5373 Fax: (403) 282-6855 | to do anything with nothing.

[ reply ]
Re: Sun Studio 11: C++ 5.8 Compiler Apr 16 2007 05:22PM
Michael T Pins (mtpins nndev org)


 

Privacy Statement
Copyright 2010, SecurityFocus