|
View:
New views
4 Messages
—
Rating Filter:
Alert me
|
|
|
Sun Studio 11: C++ 5.8 CompilerAs 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.. Thanks and Regards |
|
|
Re: Sun Studio 11: C++ 5.8 Compilerneelabhsharma1@... writes:
>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. By "result of the program" I assume you mean the output of the printf command. As your code is broken (and lint will show you where), the output is undefined. Fix your code and the output becomes what you expect. >/*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; >} -- Michael T Pins | "A year from now I'd be surprised if mtpins@... | there's not some grand square in Baghdad keeper of the nn sources | that is named after President Bush." ftp://ftp.nndev.org/pub | -Richard Perle, 9/22/03 |
|
|
Re: Sun Studio 11: C++ 5.8 CompilerOn Mon, Apr 16, 2007 at 01:22:07AM -0000, neelabhsharma1@... 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. |
|
|
|
| Free Forum Powered by Nabble | Forum Help |