Hacker News new | past | comments | ask | show | jobs | submit login

You are probably talking about C++, not C, unless those look identical to you:

    foo();
    int foo;
    (int)foo;



the cast can equally be int(foo); or (int)(foo); The parenthesis are allowed and optional. The method can be declared (int) foo(int(x), int(y)); which can also be an invocation. etc.


int(foo) and (int) foo(int(x), int(y)) are not legal syntax in C. However, they are in C++ [0], which is my whole point.

[0] your method declaration has a small problem, it apparently cannot have parenthesis around returned type.


I wouldn't really say they are optional. The two do different things. (int) foo (or (int)(foo)) is a c-style cast. int(foo) isn't a cast. Instead it invokes the int constructor with the argument foo.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: