i=(j=10,j*5)j+6 所以i等于多少和后面的j+6无关。只看i=(j=10,j*5),这个括号中也是一个逗号表达式,值为最后一个表达式的值,也就是j*5 所以是50
%ebp 18: 83 ec 10 sub $0x10,%esp int i; int j; i = 5; 1b: c7 45 fc 05 00 00 00 movl $0x5,-0x4(%ebp) j = 5; 22: c7 45 f8 05 00 00 00 movl $0x5,-0x8(%ebp)} 29: c9 leave 2a: c3 ret虽然...
首先看i*=j转换成i=i*j i=10*5=50此时i*=j整个表达式的值就为50,并且i的值发生了改变也是50 再做i=i*=j 就是i=50.请问还有疑问吗?
根据这些过程,那你的提问也就非常容易了,int i,*p=&i 是可以的,int i=5,*p=&i 也是可以的,int i=5,*p;p=&i 也对。最后一个的话严格的话来讲是正确的,即定义一个指向内存中地址为5 的地址,但结合你的语境的话应该是错误的。希望能够对你有所帮助。
这个主要考查混合操作符运算,“=”为赋值符号,从右自左运算,先算 i %= j;拆开来看等价于:i = i % j,最后再赋值给i, 即结果是 i = 0;你好好的看一下那个运算符的知识,包括操作数、结合顺序还有优先级。祝成功!
int &j=I 是变量的引用,声明j是整型变量I的引用.当“&”前有数据类型时,它是引用声明符,不代表地址。经此声明后,使用j或I的作用是相同的。
因为int i=j=5;语句中,只定义了变量i。不像int i,j 那样定义了两个变量(i与j),没定义的变量如何赋值给另一个变量呢?(即使定义了j还要考虑j的初始化值哟,不然系统随机给它内存数值也是乱哄哄的,程序会崩溃的哟)。这么回答也不知道你能明白没?VC(C/C++)、x86汇编、Delphi(Pascal)技术讨论请...
国际标准简称:INT J GYNECOL CANCER 人气869 《International Journal Of Gynecological Cancer》是一本专注于OBSTETRICS & GYNECOLOGY领域的English学术期刊,创刊于1991年,由Wolters Kluwer Health出版商出版,出版周期Monthly。该刊发文范围涵盖OBSTETRICS & GYNECOLOGY等领域,旨在及时、准确、全面地报道国内外OBSTETRICS & GYNE...
int a[2][4]={{2,5,6,8},{22,55,66,88}}; int c[4]={5,8,9,4}; int d[3]={23,12,443}; int *p[4],(*q)[4]; q=a; *p=c; *(p+1)=d; int i,j; for(i=0;i<2;i++) for(j=0;j<4;j++) { if((i==1)&&(j==3)) break; ...
,i和j也可以确定都是是8(因为都自增了三次),但是q的值受编译器的运算顺序影响,值不确定(因为你不能保证j的值在运算的式子里是什么时候自增了,里面没有一个顺序点)。这样子的题目不应该出的,因为这个运算过程并没有C语言标准的相关规定,由具体的编译环境自行确定。