这个简单的有关问题需要学习编译原理吗?

这个简单的问题需要学习编译原理吗??
问题一:
int ary[3]={'4321','8765','09'}; 
printf("%s\n",ary);
为什么输出不是4321876509,而是1234567890?我没学过编译原理。。
问题二:
VC程序员需要学习编译原理吗?
有人打比方,学弹钢琴的不一定非要搞清楚它发音的原理去调试它

------解决方案--------------------
按标准, 这种写法的结果依赖于实现, C标是这样说的, Cpp应该也差不多:
The value of an integer character constant containing more than one character (e.g.,
'ab'), or containing a character or escape sequence that does not map to a single-byte
execution character, is implementation-defined. 

这玩意学编译原理没用..