若变量已正确定义并赋值,符合C语言语法的表达式是() A。a=a+7; B.a=7+b+c,a++
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 20:56:11
若变量已正确定义并赋值,符合C语言语法的表达式是() A。a=a+7; B.a=7+b+c,a++
若变量已正确定义并赋值,符合C语言语法的表达式是()
A。a=a+7;
B.a=7+b+c,a++
C.int(12.3%4)
D.a=a+7=c+b
要解释,谢谢
若变量已正确定义并赋值,符合C语言语法的表达式是()
A。a=a+7;
B.a=7+b+c,a++
C.int(12.3%4)
D.a=a+7=c+b
要解释,谢谢
以下详细解析.
A:正确B:a=7+b+c,a++;在编译器看来这句代码是可以通过编译的,但是!逗号表达式的值是最后一个表达式的值,也就是说,a=a++;a=a++;这句代码存在undefined behavier,C语言标准规定:逗号表达式存在序点,副作用必须在两个序点间完成.这句代码中7+b+c的副作用可以保证被执行(事实上7+b+c没有副作用),但是不能保证a++的副作用在赋值前被执行.
也就是说,a=a++;你无法判断什么时候a会自增1,是赋值了之后a再自增呢,还是先a自增了再赋值成原来的a呢.int a=0;
a=a++;
// a=0?a=1?注意:尽管++的优先级比a高,但是!重点是,++的副作用完成的时间是不确定的!C:%运算符两侧必须是整数操作数.D:a=a+7=c+b;这句代码的问题在于a+7=c+b;a+7是什么?a+7是一个右值(right-value),是不允许被赋值的.关于什么叫右值,你可以自行去百度搜搜看.
附上A和B的编译截图
再问: 可是答案是B
再答: 答案有问题,你可以请老师举出a=a+7;这句代码错误的地方.
同时也问问老师知不知道什么叫序点,什么叫副作用,什么叫ISO/IEC,什么叫ANSI C.(注:即使是在国家标准GB中这也是Undefined behavior,国家标准事实上就是对国际ISO/IEC标准的翻译.)
栗子代码:// for c++
#include <iostream>
int main(void)
{
int a=0;
a=a+7;
std::cout << a; // must be 7
a=a++;
std::cout << a; // undefined behavior
return 0;
}// for c
#include <stdio.h>
int main(void)
{
int a=0;
a=a+7;
printf("%d",a); // must be 7
a=a++;
printf("%d",a); // undefined behavior
return 0;
}同时我还可以给你个我以前做过的图片合集:这种++--的问题在不同编译器下给出的神奇答案.http://tieba.baidu.com/p/3141315099
A:正确B:a=7+b+c,a++;在编译器看来这句代码是可以通过编译的,但是!逗号表达式的值是最后一个表达式的值,也就是说,a=a++;a=a++;这句代码存在undefined behavier,C语言标准规定:逗号表达式存在序点,副作用必须在两个序点间完成.这句代码中7+b+c的副作用可以保证被执行(事实上7+b+c没有副作用),但是不能保证a++的副作用在赋值前被执行.
也就是说,a=a++;你无法判断什么时候a会自增1,是赋值了之后a再自增呢,还是先a自增了再赋值成原来的a呢.int a=0;
a=a++;
// a=0?a=1?注意:尽管++的优先级比a高,但是!重点是,++的副作用完成的时间是不确定的!C:%运算符两侧必须是整数操作数.D:a=a+7=c+b;这句代码的问题在于a+7=c+b;a+7是什么?a+7是一个右值(right-value),是不允许被赋值的.关于什么叫右值,你可以自行去百度搜搜看.
附上A和B的编译截图
再问: 可是答案是B
再答: 答案有问题,你可以请老师举出a=a+7;这句代码错误的地方.
同时也问问老师知不知道什么叫序点,什么叫副作用,什么叫ISO/IEC,什么叫ANSI C.(注:即使是在国家标准GB中这也是Undefined behavior,国家标准事实上就是对国际ISO/IEC标准的翻译.)
栗子代码:// for c++
#include <iostream>
int main(void)
{
int a=0;
a=a+7;
std::cout << a; // must be 7
a=a++;
std::cout << a; // undefined behavior
return 0;
}// for c
#include <stdio.h>
int main(void)
{
int a=0;
a=a+7;
printf("%d",a); // must be 7
a=a++;
printf("%d",a); // undefined behavior
return 0;
}同时我还可以给你个我以前做过的图片合集:这种++--的问题在不同编译器下给出的神奇答案.http://tieba.baidu.com/p/3141315099
若变量已正确定义并赋值,符合C语言语法的表达式是() A。a=a+7; B.a=7+b+c,a++
若变量以正确定义并赋值,符合C语言语法的表达式是( ) A)a=a+7; B)a=
若变量已正确定义并赋值,符合C语言语法的表达式是 A a=a+7; B a=7+b+c,a++ C int(12.3%4
c语言第一题:若变量已经正确定义并赋值,符合c语言语法的表达式是() A、a=a+7;B、a=7+b+c,a++ C、i
c语言选择27、若变量已正确定义并赋值,下面符合C语言语法的表达式是( )。(1分) A、a:=b+1 B、a=b=c+
C语言题目:若变量已正确定义并赋值,为什么“a=a+7=c+b”不符合C语言语法的表达式?
若变量已正确定义并赋值,下面符合C语言语法的表达式是( ).(1分) A、a:=b+1 B、a=b=c+2 C、int
有关于C程的问题若变量已正确定义并赋值,符合C语言语法的表达式是 A.a=2++ B.a=3,5 C.a=a+1=3 D
若变量已正确定义并赋值,下面符合C语言语法的表达式是( ).A.a:=b+1 Ba=b=c+2 C.int 18.5%3
若变量已正确定义并赋值,符合C语言语法的表达式是 A.a=2++ B.a=3,5 C.a=a+1=3 D.12.3%4
若变量已正确定义并赋值,表达式______不符合C语言语法.A、a*b/c; B、3.14%2 C、2,b D、a/b/
在C语言中,若变量已正确定义并赋值,则该表达式 a=a+7=c+b