Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Fan_Y_
Beginner
97 Views

Initialization of arrays

I've encountered a wierd problem. When I was doing:

double p[]={1.d, 2.d, 3.d, 4.d, 5.d};//or even double p[5] = blahblahblah...

And then I made a for loop to check the values of array p, I got all zeros. This is a problem that I abstract during the debugging. In fact, this happens   when I use icc or icpc to compile, on the contrary, the it truns out that everything is fine with gcc or g++. I'm so confused...

I'm using icc version 13.1.0. 

Thank you for your comments!

0 Kudos
3 Replies
Marián__VooDooMan__M
New Contributor II
97 Views

As far as I know, a "d" suffix is not standard for floats. Use one of:

  • "f" or "F" for "float"
  • "l" or "L" for "long double"
  • (nothing) for "double"

This must be GCC's extension to the standard.

JenniferJ
Moderator
97 Views

changing ".d" to ".f" does work around the issue.

Not sure since which version of gcc that accepts the ".d". But I'll file a ticket for it.

Jennifer

SergeyKostrov
Valued Contributor II
97 Views

>>...double p[] = { 1.d, 2.d, 3.d, 4.d, 5.d }; This is clearly Non standard specificator and if portability is important it shouldn't be used. Why don't you want to use L instead? Please take a look at attached test case with verifications for Intel and Borland C++ compilers.
Reply