C/C++ÖеÄÄÚ´æ²¹Æë»úÖÆ
ÔÚCÓïÑÔÖУ¬½á¹¹ÊÇÒ»ÖÖ¸´ºÏÊý¾ÝÀàÐÍ£¬Æä¹¹³ÉÔªËØ¼È¿ÉÒÔÊÇ»ù±¾Êý¾ÝÀàÐÍ£¨Èçint¡¢long¡¢floatµÈ£©µÄ±äÁ¿£¬Ò²¿ÉÒÔÊÇһЩ¸´ºÏÊý¾ÝÀàÐÍ£¨ÈçÊý×é¡¢½á¹¹¡¢ÁªºÏµÈ£©µÄÊý¾Ýµ¥Ôª¡£ÔڽṹÖУ¬±àÒëÆ÷Ϊ½á¹¹µÄÿ¸ö³ÉÔ±°´Æä×ÔÈ»¶Ô½ç£¨alignment£©Ìõ¼þ·ÖÅä¿Õ¼ä¡£¸÷¸ö³ÉÔ±°´ÕÕËüÃDZ»ÉùÃ÷µÄ˳ÐòÔÚÄÚ´æÖÐ˳Ðò´æ´¢£¬µÚÒ»¸ö³ÉÔ±µÄµØÖ·ºÍÕû¸ö½á¹¹µÄµØÖ·Ïàͬ¡£ÀýÈ磬ÏÂÃæµÄ½á¹¹¸÷³ÉÔ±¿Õ¼ä·ÖÅäÇé¿ö£º
struct test
{
char x1;
short x2;
float x3;
char x4;
};
½á¹¹µÄµÚÒ»¸ö³ÉÔ±x1ΪcharÀàÐÍ£¬Æä×ÔÈ»¶Ô½çΪ1£¬ÆäÆ«ÒÆµØÖ·Îª0£¬Õ¼¾ÝÁ˵Ú1¸ö×Ö½Ú¡£µÚ¶þ¸ö³ÉÔ±x2ΪshortÀàÐÍ£¬Æä×ÔÈ»¶Ô½çΪ2£¬ÆðʼµØÖ·±ØÐë2×ֽڶԽ磬Òò´Ë£¬±àÒëÆ÷ÔÚx2ºÍx1Ö®¼äÌî³äÁËÒ»¸ö¿Õ×Ö½Ú¡£½á¹¹µÄµÚÈý¸ö³ÉÔ±x3ºÍµÚËĸö³ÉÔ±x4Ç¡ºÃÂäÔÚÆä×ÔÈ»¶Ô½çµØÖ·ÉÏ£¬ÔÚËüÃÇÇ°Ãæ²»ÐèÒª¶îÍâµÄÌî³ä×Ö½Ú¡£ÔÚtest½á¹¹ÖУ¬³ÉÔ±x3ÒªÇó4×ֽڶԽ磬ÊǸýṹËùÓгÉÔ±ÖÐÒªÇóµÄ×î´ó¶Ô½çµ¥Ôª£¬Òò¶øtest½á¹¹µÄ×ÔÈ»¶Ô½çÌõ¼þΪ4×Ö½Ú£¬±àÒëÆ÷ÔÚ³ÉÔ±x4ºóÃæÌî³äÁË3¸ö¿Õ×Ö½Ú¡£Õû¸ö½á¹¹ËùÕ¼¾Ý¿Õ¼äΪ12×Ö½Ú¡£
¸ü¸ÄC±àÒëÆ÷µÄȱʡ×Ö½Ú¶ÔÆë·½Ê½
ÔÚȱʡÇé¿öÏ£¬C±àÒëÆ÷Ϊÿһ¸ö±äÁ¿»òÊÇÊý¾Ýµ¥Ôª°´Æä×ÔÈ»¶Ô½çÌõ¼þ·ÖÅä¿Õ¼ä¡£Ò»°ãµØ£¬¿ÉÒÔͨ¹ýÏÂÃæµÄ·½·¨À´¸Ä±äȱʡµÄ¶Ô½çÌõ¼þ£º
· ʹÓÃαָÁî#pragma pack (n)£¬C±àÒëÆ÷½«°´ÕÕn¸ö×Ö½Ú¶ÔÆë¡£
· ʹÓÃαָÁî#pragma pack ()£¬È¡Ïû×Ô¶¨Òå×Ö½Ú¶ÔÆë·½Ê½¡£
ÁíÍ⣬»¹ÓÐÈçϵÄÒ»ÖÖ·½Ê½£º
· __attribute((aligned (n)))£¬ÈÃËù×÷ÓõĽṹ³ÉÔ±¶ÔÆëÔÚn×Ö½Ú×ÔÈ»±ß½çÉÏ¡£Èç¹û½á¹¹ÖÐÓгÉÔ±µÄ³¤¶È´óÓÚn£¬Ôò°´ÕÕ×î´ó³ÉÔ±µÄ³¤¶ÈÀ´¶ÔÆë¡£
· __attribute__ ((packed))£¬È¡Ïû½á¹¹ÔÚ±àÒë¹ý³ÌÖеÄÓÅ»¯¶ÔÆë£¬°´ÕÕʵ¼ÊÕ¼ÓÃ×Ö½ÚÊý½øÐÐ¶ÔÆë¡£
ÒÔÉϵÄn = 1, 2, 4, 8, 16... µÚÒ»ÖÖ·½Ê½½ÏΪ³£¼û¡£
http://blog.csdn.net/wenddy112/articles/300583.aspx
Ó¦ÓÃʵÀý
¡¡¡¡ÔÚÍøÂçÐÒé±à³ÌÖУ¬¾³£»á´¦Àí²»Í¬ÐÒéµÄÊý¾Ý±¨ÎÄ¡£Ò»ÖÖ·½·¨ÊÇͨ¹ýÖ¸ÕëÆ«ÒÆµÄ·½·¨À´µÃµ½¸÷ÖÖÐÅÏ¢£¬µ«ÕâÑù×ö²»½ö±à³Ì¸´ÔÓ£¬¶øÇÒÒ»µ©ÐÒéÓб仯£¬³ÌÐòÐÞ¸ÄÆðÀ´Ò²±È½ÏÂé·³¡£ÔÚÁ˽âÁ˱àÒëÆ÷¶Ô½á¹¹¿Õ¼äµÄ·ÖÅäÔÔòÖ®ºó£¬ÎÒÃÇÍêÈ«¿ÉÒÔÀûÓÃÕâÒ»ÌØÐÔ¶
Ïà¹ØÎĵµ£º
µ±Ï¶¨¾öÐÄÈ¥×öÒ»¼þÊÂÇéµÄʱºò,¾ÍûÓÐʲô¿ÉÒÔ×èµ²ÎÒ£¡Æ©Èçȥ˯¾õ--! from ¡¶¾õÖ÷ÓA·
ÁîÎÒìþìý²»°²µÄ¸ßÊýѧλ֤¿¼ÊÔ¹ýÈ¥ÁË£¬½á¹û»¹ÊÇÂúÒâµÄ¡£ËäÈ»»¨ÁË3ÖܵÄʱ¼äÈ¥×¼±¸¸´Ï°Êýѧ£¬µ«ÊÇÎÒÈ´·¢ÏÖ£¬ÕæÕýȥѧϰµÄʱºòÖ»ÓÐ×îºóÄÇÁ½Ì죬ÒÔÍùµÄʱ¼äÈ«ÊÇÀ˷ѵôÁË¡£ËìÃ÷
°×£¬ÎªÊ²Ã´Í¬Ò»ÖÖ»·¾³ÏµÄÈË£¬ÓеijÉÁËÌì²Å£¬ÓеÄÂÙÎ ......
C++ÓëJavaµÄÓï·¨Çø±ð
Ê×ÏÈ£¬Á½¸ö´óµÄ²»Í¬ÊÇÖ÷º¯ÊýºÍÔõÑù±àÒëµÄ²»Í¬£¬½ÓÏÂÀ´ÊÇÐí¶àСµÄÇø±ð¡£
main º¯Êý
C++
//×ÔÓɸ¡¶¯µÄº¯Êý
int main( int argc, char* argv[])
{
printf( "Hello, world" );
}
Java
// ÿ¸öº¯Êý¶¼±ØÐëÊÇÒ»¸öÀàµÄÒ»²¿·Ö;µ±java <class>ÔËÐÐÊÇÒ»¸öÌØ¶¨ÀàµÄÖ÷º¯Êý»á±»µ÷ ......
ÏÂÃæÕâ¸ö³ÌÐòÊä³öʲô£¿
enum {false,true};
int main()
{
int i=1;
do
{
printf("%d\n",i);
i++;
if(i < 15)
continue;
}while(false);
return 0;
}
ÄãÏàÐÅô£¿Ï ......
Àý£º#define NELE(a) (sizeof(a) / sizeof(a[0]))
int main() {
char str[] = {'E', 'M', 'C'};
for (int d=-1; d<=(NELE(str)-2);d++)
printf("%c",str[d+1]);
return 0;
}
ÅжÏprintf£¨£©Êä³öµÄÊÇʲô£¬½á¹û¿ÉÄܳöºõÒâÁÏ£¬Ê²Ã´Ò²Ã»ÓÐÊä³ö£¬ÔÒòÄØ£¿ÔÒò ......
from: http://www.leftworld.net/online/java/index.html
<Thinking in java>¸½Â¼B ¶Ô±ÈC++ºÍJava
“×÷ΪһÃûC++³ÌÐòÔ±£¬ÎÒÃÇÔçÒÑÕÆÎÕÁËÃæÏò¶ÔÏó³ÌÐòÉè¼ÆµÄ»ù±¾¸ÅÄ¶øÇÒJavaµÄÓï·¨ÎÞÒÉÊǷdz£ÊìϤµÄ¡£ÊÂʵÉÏ£¬Java±¾À´¾ÍÊÇ´ÓC++ÑÜÉú³öÀ´µÄ¡£”
È»¶ø£¬C++ºÍJavaÖ®¼äÈÔ´æÔÚһЩÏÔÖøµÄ²îÒì¡£¿ÉÒÔÕâÑ ......