为什么两种情况下的行为不同1.int i=1,2,3;和第二.int i;i=1,2,3;
Why different behavior in two cases 1st. int i = 1,2,3; and 2nd. int i; i = 1,2,3;
使用GCC编译器,在C程序中使用以下两种运算符,观察到不同的行为。
1.
int i = 1,2,3;
printf("%d",i); // this will give compile time error
而且,
2.
int i;
i = 1,2,3;
printf("%d",i); // Its output will be 1.
在第一种情况下,编译器给出错误"error:在数字常量之前应为标识符或"(""。在第二种情况下,没有错误,输出为1。有人能在这里详细解释一下这两种情况下的编译器行为吗?编译器如何解释这两个语句?
提前感谢您的意见。
-
在第一种情况下,逗号分隔相同类型的几个变量的声明和初始化:
int i = 1, j = 2, k = 3;
您可以添加圆括号来告诉编译器这是一个表达式。
int i = (1, 2, 3);
如果你把它们组合起来,就更容易理解为什么逗号在没有括号的情况下是模糊的:
int i = (1, 2, 3), j = 4, k = 5;
-
在第二种情况下,逗号分隔3个表达式。
(i = 1), 2, 3
相关文章:
- 在C++中将函数压缩为两种方式
- 如何使映射键具有两种不同的数据类型?
- 两种访问I2C总线的方法有什么区别?
- 两种模板示例有什么区别?
- 如何构造可以调用和返回两种不同类型的模板
- 这两种C++语法之间有什么区别?
- 为什么两种不同的对象初始化方式给出不同的输出
- std::cin 从控制台获取两种不同的变量类型,'storing'以后使用第二种类型?
- 定义类模板构造函数的两种方法之间的区别
- 初始化类的两种方法?
- C++ 一个函数,可以根据接受的值返回两种类型之一
- 如何检查程序员在C++中提供的两种不同格式的输入
- C++指针中的这两种类型的值分配有什么区别?
- 如何在c ++中以一行(水平)打印两个文件的数据?如给定的.这两种形式来自两个不同的文本文件
- 有没有办法让C++函数采用具有相同成员的两种不同类型?
- 声明具有两种类型的变量:"int char"
- C 性能:两种短裤与INT位操作
- 为什么两种情况下的行为不同1.int i=1,2,3;和第二.int i;i=1,2,3;
- C++ - 将 int 拆分为两种较小的数据类型
- 将数据从两种不同的数据结构插入 std::map <std::string, int> mymap 并通过套接字发送