单选题
1、〖第12题〗22) 以下不符合C语言语法的赋值语句是()。
A
j++;
B
j=j=5;
C
k=2*4,k*4;
D
y=float(j);
答案解析
正确答案:D
解析:
这道题考查的是 C 语言中赋值语句的语法规则以及类型转换的正确写法。我们需要逐一分析每个选项,判断其是否符合 C 语言标准。
**选项分析:**
* **A. `j++;`**
* 这是一个自增表达式语句。在 C 语言中,`j++` 等价于 `j = j + 1`(后置自增),它是一个合法的表达式,加上分号后构成合法的表达式语句。
* **结论:符合语法。**
* **B. `j=j=5;`**
* 赋值运算符 `=` 具有右结合性。该语句等价于 `j = (j = 5);`。
* 首先执行 `j = 5`,将 5 赋值给 j,该表达式的值为 5;然后将这个值再次赋值给 j。虽然逻辑上有点冗余,但在语法上是完全合法的。
* **结论:符合语法。**
* **C. `k=2*4,k*4;`**
* 这里涉及逗号运算符 `,`。逗号表达式的形式为 `表达式1, 表达式2`。
* 整个语句是一个逗号表达式语句。先计算 `k=2*4`(即 k 被赋值为 8),再计算 `k*4`(结果为 32,但未被赋值给任何变量,仅作为表达式的值)。
* 虽然 `k*4` 没有产生副作用(没有改变变量的值),但这在 C 语言中是允许的,只是通常编译器可能会给出“语句无效果”的警告,但它**符合语法**。
* **结论:符合语法。**
* **D. `y=float(j);`**
* 在 C 语言中,**强制类型转换**的正确语法格式是 `(类型名)表达式`,例如 `(float)j`。
* `float(j)` 这种写法类似于函数调用或 C++ 中的功能性 cast(functional cast),但在标准的 C 语言中,`float` 是关键字,不是函数名,不能这样使用。
* 正确的写法应该是:`y = (float)j;`
* **结论:不符合 C 语言语法。**
**总结:**
选项 A、B、C 均为合法的 C 语言语句,而选项 D 使用了错误的类型转换语法。
因此,不符合 C 语言语法的赋值语句是 **D**。
题目纠错
c语言选择判断题库
相关题目
单选题
1、已知字母a的ASCII十进制代码为97,则执行下列语句后的输出结果为()。char a='a'; a--; printf(”%d,%c\n”,a+'2'-'0',a+'3'-'0');
单选题
1、对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是()。
单选题
1、若有说明:int a[10];则对a数组元素的正确引用是()。
单选题
1、以下数据中,不正确的数值或字符常量是()。
单选题
9.以下数组定义中不正确的是()。
单选题
8.设有 int x=11; 则表达式 (x++ * 1/3) 的值是()。
单选题
3.以下数据中,不正确的数值或字符常量是()。
单选题
1、第300题 (1.0分) 题号:516 static char str[10]=“China”;数组元素个数为()。
单选题
1、第299题 (1.0分) 题号:664 以下正确的函数定义形式是()。
单选题
1、第298题 (1.0分) 题号:537 在定义构造数据类型时,不能()。
