C++中<< 运算符的计算顺序

来源:互联网 发布:升级win10网络连不上 编辑:程序博客网 时间:2024/05/16 23:34
#include <iostream>using namespace std;template <typename T>void swap(T &a, T &b) {    T temp(a);    a = b;    b = temp;}template <typename T>T add(const T &a, const T &b) {    return a + b;}int main(){    cout << "Hello world!" << endl;    int a = 0;    cout << a++ << a++ << a++ << endl;    char *p = "abc";    cout << *(p++) << *(p++) << *(p++) << endl;    return 0;}


2.printf中类似的用法:

#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]){    int arr[] = {6, 7, 8, 9, 10};    int *ptr = arr;    *(ptr++) += 123; //后置++在表达式计算完成后,执行,前置的++在表达式执行之前执行;    //arr++; arr 是个右值rvalue,而++需要一个左值lvalue;    printf("%d\n", (int)&arr);    printf("%d\n", arr[0])    printf("%d, %d\n", *ptr, *(++ptr)); //printf 参数的压栈顺序,从右往左。输出 8,8;    unsigned char a = 0xA5;    unsigned char b = ~a >> 4;    printf("~a = %x \n", ~a);    printf("a = %d \n", a);    printf("b = %d \n", b);    float f = 1.0f;    printf("(int) f = %x\n", (int)f);    printf("&f = %x\n", &f);    return 0;}



原创粉丝点击