关于stract应用的问题求解

以下问题在DEVC++中编译

#include
#include 
using namespace std;
int main()
{
    char str1[] = "I am ";
    char str2[] = "happy."; 
    cout<strcat(str1,str2);
    return 0;
}

如上程序的输出结果如下,会先正常的输出原本的str1和str2,在输出两者连接后的字符串


```c++
I am
happy.
I am happy.

但如果按照以下方式编写程序

#include
#include
using namespace std;
int main()
{
    char str1[] = "I am ";
    char str2[] = "happy."; 
    cout<strcat(str1,str2);
    return 0;
}

则运行结果如下

I am happy.
happy.
I am happy.

求解原因

从右向左执行,从左到右输出