C/C++__基础类型的(=)赋值表达式的返回值
2015-09-17 11:42
399 查看
今天遇到了一段代码对赋值运算符之后的表达式进行判断,由于之前没接触过类似的代码,特此记录。
if ((pTmpBuf = pBuf) != NULL)
结论: C/C++中 (A = B) 返回得到是赋值号(=)的左面的值
代码如下 :
那么该表达返回的是(=)等号左边的值还是等号右边的值,我对此进行了探索
测试一:
![](http://img.blog.csdn.net/20150917113600287?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
测试二:
![](http://img.blog.csdn.net/20150917113757129?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
由以上两个测试可以看出 C/C++中 (A = B) 返回得到是赋值号(=)的左面的值
if ((pTmpBuf = pBuf) != NULL)
结论: C/C++中 (A = B) 返回得到是赋值号(=)的左面的值
代码如下 :
if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA)) { if ((pTmpBuf = pBuf) != NULL) { // // Loop through the entries. // for (i = 0; (i < dwEntriesRead); i++) { assert(pTmpBuf != NULL); if (pTmpBuf == NULL) { fprintf(stderr, "An access violation has occurred\n"); break; } // // Print the name of the user account. // //\t-- wprintf(L"%s\n", pTmpBuf->usri0_name); pTmpBuf++; dwTotalCount++; } } }
那么该表达返回的是(=)等号左边的值还是等号右边的值,我对此进行了探索
测试一:
#include <iostream> #include <cstdio> using namespace std; int main() { int a; float b = 1.2; if ((a = b) == 1.2) { printf("ssssss\n"); } return 0; }
测试输出:
测试二:
#include <iostream> #include <cstdio> using namespace std; int main() { int a; float b = 1.2; if ((a = b) == 1) { printf("ssssss\n"); } return 0; }
由以上两个测试可以看出 C/C++中 (A = B) 返回得到是赋值号(=)的左面的值
相关文章推荐
- C语言printf函数
- C++ 联合体共享变量值的计算
- 常见C++内存池技术
- C语言数组地址【元素地址及数组地址获取方法区别】
- double类型显示问题 设置显示小数点位数
- C++中const的实现细节介绍(C,C#同理)
- C++中const的实现细节介绍(C,C#同理)
- C/C++刁钻问题各个击破 位运算及其应用实例(2)
- C/C++刁钻问题各个击破 位运算及其应用实例(1)
- C++运算符
- c/c++回调函数
- C/C++刁钻问题各个击破之细说sizeof
- C语言实现单链表-03版
- C语言算法小练习-10
- C语言算法小练习-9
- C++中的头文件和源文件
- C语言小算法-8
- c++ class 与 struct 的区别!
- C语言算法小练习-7
- C++学习之const指针和多维数组