TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Can code that is valid in both C and C++ produce different behavior?

83 pointsby ivoflipseover 12 years ago

3 comments

CJeffersonover 12 years ago
Interesting discussion. I can honestly say that I have never seen any of these come up.<p>In case anyone is worried, the sizeof('i') one looks, at first glance, like the most worrying one.<p>However, it is less serious than it might look. Given "char c;", sizeof(c) evaluates to 1 in both languages, it is just a single character constant like 'i' which causes a possible problem.<p>For anyone curious why, I'm not sure why character constants are int in C, but in pure C I think it is impossible to tell that a character literal is an int (as there is no function overloading, or type deductions).<p>In C++ however, with function overloading, we can tell. In particular, we really want:<p>std::cout &#60;&#60; 1 &#60;&#60; 'i' &#60;&#60; std::endl;<p>To print the number 1, followed by the letter i. Therefore we need the letter i to be of type char, rather than another int.<p>(Fixed last 'C' to 'C++' : Thanks dbaupp)
评论 #4654322 未加载
评论 #4654234 未加载
finnwover 12 years ago
It's nice to see a HN submission of an <i>on-topic</i> stackoverflow question (instead of all the off-topic ones that get submitted, followed by comments complaining about the question being closed on SO.)
sturmehover 12 years ago
I'm sure you could get different behaviours with some fancy use of pointers and reference notation.