<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Albert52856的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Albert52856</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Albert52856]]></copyright><item><title><![CDATA[WPF 学习笔记-使用默认浏览器打开网页出现用户未处理的异常]]></title><link>https://blog.youkuaiyun.com/Albert52856/article/details/121630577</link><guid>https://blog.youkuaiyun.com/Albert52856/article/details/121630577</guid><author>Albert52856</author><pubDate>Tue, 30 Nov 2021 13:32:09 +0800</pubDate><description><![CDATA[在用 WPF 做扫雷小游戏的时候，需要使用默认浏览器打开网页，但是从网上搜索来的答案都是下面这样的。
System.Diagnostics.Process.Start("www.bing.com");

但是在程序中这样写的时候，会发生如下错误：

（我当前的运行环境是 VS2022 + .Net6.0）
我在中文的搜索引擎上找了半天都没找到解决方法，最后在 Stack Overflow上找到了解决方案（源网址见下面的参考资料）。所以在这里记录下来，希望能帮到更多的人。
出现这样的原因是在 .Net Cor]]></description><category></category></item><item><title><![CDATA[与运算符和或运算符的语句执行顺序]]></title><link>https://blog.youkuaiyun.com/Albert52856/article/details/121554905</link><guid>https://blog.youkuaiyun.com/Albert52856/article/details/121554905</guid><author>Albert52856</author><pubDate>Fri, 26 Nov 2021 10:46:11 +0800</pubDate><description><![CDATA[与运算符和或运算符的语句执行顺序
有一个老生常谈的问题，那就是与运算符和或运算符的语句执行顺序。
express1 || express2

先执行表达式express1如果为“真”，express2将不被执行，express2仅在express1为“假”时才被执行。因为第一个表达式为真了，整个表达式都为真，所以没有必要再去执行第二个表达式了。
express1 &amp;&amp; express2

先执行表达式express1如果为“假”，express2将不被执行，express2仅在express]]></description><category></category></item><item><title><![CDATA[Linux 执行命令为什么要加 ./（点斜杠） ？]]></title><link>https://blog.youkuaiyun.com/Albert52856/article/details/121554779</link><guid>https://blog.youkuaiyun.com/Albert52856/article/details/121554779</guid><author>Albert52856</author><pubDate>Fri, 26 Nov 2021 10:44:34 +0800</pubDate><description><![CDATA[文章目录问题引入原因分析什么是环境变量终端中命令搜索规则把自己的命令添加进环境变量扩展：Linux中的`~`、`/`、`./`分别代表什么
问题引入
如下图所示，当前文件夹下有一个名为 Hello.sh 的 shell 脚本，但是在执行它的时候却提示找不到文件，只有当前面加上 ./ 才可以正确的运行这个脚本。那么这个是为什么呢？


原因分析
虽然我们的终端是在当前目录，而且当前目录中有我们要执行的文件，但是终端就是找不到它。需要我们指定文件的相对或绝对路径来告诉终端我们想运行的文件在哪里。
在 Linux]]></description><category></category></item><item><title><![CDATA[函数的输入输出设计]]></title><link>https://blog.youkuaiyun.com/Albert52856/article/details/121554749</link><guid>https://blog.youkuaiyun.com/Albert52856/article/details/121554749</guid><author>Albert52856</author><pubDate>Fri, 26 Nov 2021 10:42:23 +0800</pubDate><description><![CDATA[函数的输入输出设计
输入要保持开放，输出要保持保守。（Be liberal in what you accept, and conservative in what you send.）
-- Jon Postel 谈如何设计接口
我经常看到这样的程序：
void FuncName(char* str)
{
    int len = strlen(str);
    .....
}

char* GetUserName(struct user* pUser)
{
    return pUser-&gt;]]></description><category></category></item><item><title><![CDATA[C语言学习笔记-结构体占用内存大小的计算]]></title><link>https://blog.youkuaiyun.com/Albert52856/article/details/121554675</link><guid>https://blog.youkuaiyun.com/Albert52856/article/details/121554675</guid><author>Albert52856</author><pubDate>Fri, 26 Nov 2021 10:40:27 +0800</pubDate><description><![CDATA[C语言学习笔记-结构体占用内存大小的计算引言例子计算方法结构体的内存计算方式遵循以下规则：有了这些规则，再来看上面的两个例子。如果手动设置`#pragma pack(4)`呢补充：C语言数据类型占内存大小
引言
结构体在C语言中虽然经常使用，但是怎么计算一个结构体占用多大的内存，很多C语言的新手都没注意过，其实C语言的语法简单，难就难在它更偏向于与底层，与内存打交道。对于嵌入式方面来说，对C语言的要求更高，因为有些硬件的内存并不像我们使用的电脑的内存那么充裕，所以需要节约内存。
结构体中同样的变量个数，却可]]></description><category></category></item><item><title><![CDATA[C语言学习笔记-宏定义的使用注意事项]]></title><link>https://blog.youkuaiyun.com/Albert52856/article/details/120038319</link><guid>https://blog.youkuaiyun.com/Albert52856/article/details/120038319</guid><author>Albert52856</author><pubDate>Wed, 01 Sep 2021 13:55:09 +0800</pubDate><description><![CDATA[在使用宏定义的时候有一些注意事项
必须注意，要适当的使用圆括号以保证计算次序的正确性。
比如：
# define square(x) x * x

当使用 square(x + 1) 调用该宏定义的时候会出现什么情况呢？

请见下面例子：
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdlib.h&gt;

# define square(x) (x * x)

int main(void) 
{
    int i = ]]></description><category></category></item><item><title><![CDATA[横河电机面试经历]]></title><link>https://blog.youkuaiyun.com/Albert52856/article/details/120038286</link><guid>https://blog.youkuaiyun.com/Albert52856/article/details/120038286</guid><author>Albert52856</author><pubDate>Wed, 01 Sep 2021 13:54:08 +0800</pubDate><description><![CDATA[上周进行了横河电机的面试，面试总共分两轮，第一轮是部门经理面，第二轮是总监面。总体面试过程很愉快，我在不侵犯隐私的情况下记录一下。
两次面试下来，都可以感觉到管理人员对于公司流程的思考和对于质量管理的严格要求。
尤其是对于公司流程方面的问题，详细到我以为他是对手公司派过来的商业间谍。
下面我对这两个方面进行了一些记录。对于不重要的部分做了部分的删除和更改。
Q：你说的维护项目主要是做什么？
解决工程现场出现的问题，解决生产过程中出现的问题，做一些非标等工作。
balabala。。。
Q：工程现场出现的问题主]]></description><category></category></item><item><title><![CDATA[C语言学习笔记-有符号数和无符号数相加的问题]]></title><link>https://blog.youkuaiyun.com/Albert52856/article/details/120038232</link><guid>https://blog.youkuaiyun.com/Albert52856/article/details/120038232</guid><author>Albert52856</author><pubDate>Wed, 01 Sep 2021 13:51:25 +0800</pubDate><description><![CDATA[Q: 下面的代码输出是什么，为什么？
void test(void)
{
    unsigned int a = 6;
    int b = -10;
    ((a + b) &gt; 0) ? printf("a + b &gt; 0\r\n") : printf("a + b &lt; 0\r\n");
    printf("a + b = %d\r\n", a + b);
}

A:
废话，输出是：
a + b &lt; 0
a + b = -4


但是，上机实际跑一跑，真的是这样的吗？

]]></description><category></category></item><item><title><![CDATA[栈为什么要由高地址向低地址扩展？]]></title><link>https://blog.youkuaiyun.com/Albert52856/article/details/119836153</link><guid>https://blog.youkuaiyun.com/Albert52856/article/details/119836153</guid><author>Albert52856</author><pubDate>Sat, 21 Aug 2021 10:24:15 +0800</pubDate><description><![CDATA[原因
计算机内存分了代码段（.text段）、初始化的数据段（.data段）、未初始化的数据段（.bss段）、堆空间（heap）、栈空间（stack）和命令行参数和环境变量区域。
程序计数器(Program Counter，简称PC)的缺省指向0地址，计算机开机后从程序计数器指向的地址开始执行程序，每执行完一条指令后， 程序计数器自动加1。
因此很自然的，代码段从低地址区间开始加载，向高地址区间扩展；
heap从低地址向高地址扩展，做内存管理相对要简单些，为了避免栈空间和代码段冲突，最大利用地址空间，很自然的]]></description><category></category></item><item><title><![CDATA[C语言学习笔记-浮点数的使用注意事项]]></title><link>https://blog.youkuaiyun.com/Albert52856/article/details/119832323</link><guid>https://blog.youkuaiyun.com/Albert52856/article/details/119832323</guid><author>Albert52856</author><pubDate>Fri, 20 Aug 2021 22:11:23 +0800</pubDate><description><![CDATA[C语言学习笔记-浮点数的使用注意事项
浮点数都是有符号的，没有 unsigned 浮点数
Q:
为什么没有无符号的浮点型，比如 unsigned float 或 unsigned double？
A:
为什么C++不支持无符号浮点数是因为CPU没有等效的机器代码操作来执行.因此支持它是非常低效的.
所以问题就是为什么硬件实施者不支持它？我认为答案是最初没有定义无符号浮点标准。由于语言喜欢向后兼容，即使添加了语言也无法使用它。要查看浮点规范，您应该查看IEEE标准754浮点数。
我肯定无符号浮点数是有用处的。]]></description><category></category></item><item><title><![CDATA[记一次 C# StackOverflowException 异常]]></title><link>https://blog.youkuaiyun.com/Albert52856/article/details/118881700</link><guid>https://blog.youkuaiyun.com/Albert52856/article/details/118881700</guid><author>Albert52856</author><pubDate>Sun, 18 Jul 2021 19:31:22 +0800</pubDate><description><![CDATA[记一次 C# StackOverflowException 异常
背景
在看刘铁猛老师的《C# 语言入门详解》的第17讲的时候，在 45:00 处，学习属性的 Get/Set 函数，和老师一样的代码，但是老师的没有出错，我的程序在运行的时候却报出了
System.StackOverflowException:“Exception_WasThrown”

错误。
涉及到的代码如下：
public int Score       // 创建一个属性
{
    get
    {
        return ]]></description><category></category></item><item><title><![CDATA[ARM-linux 嵌入式板子移植 lrzsz ---全网最全最详细，保证100%成功]]></title><link>https://blog.youkuaiyun.com/Albert52856/article/details/114459055</link><guid>https://blog.youkuaiyun.com/Albert52856/article/details/114459055</guid><author>Albert52856</author><pubDate>Sat, 06 Mar 2021 21:49:37 +0800</pubDate><description><![CDATA[ARM-linux 嵌入式板子移植 lrzsz
文章目录ARM-linux 嵌入式板子移植 lrzsz下载源码复制到 ubuntu 主机并解压安装并使用交叉编译工具链交叉编译(需要提前装好交叉编译环境)配置编译安装到开发板挂载优盘复制到开发板并安装使用 lrzsz 传输文件执行 lrz 命令将文件从PC机传送到目标版上：执行 lsz 命令将文件从目标版传到PC机上：
因为无法在公司内部搭建局域网，或者开发板没有网口，并且需要在windows和ARM板之间传输文件，这时就可以选择使用lrzsz，它可以将win]]></description><category></category></item><item><title><![CDATA[C语言学习笔记：break and continue]]></title><link>https://blog.youkuaiyun.com/Albert52856/article/details/109478185</link><guid>https://blog.youkuaiyun.com/Albert52856/article/details/109478185</guid><author>Albert52856</author><pubDate>Tue, 03 Nov 2020 20:16:20 +0800</pubDate><description><![CDATA[在循环体中，C 提供了下列的循环控制语句。

break
continue
goto

但是 goto 尽量不要使用。它会导致代码结构混乱。

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int main(void)
{
    int x = 5;
    int y = 5;

    while (x &gt; 0)
    {
        printf("x为：%d\r\n", x);
        if (x &lt;= 3)
  ]]></description><category></category></item><item><title><![CDATA[C语言学习笔记： i ＜ j ＜ k 的操作]]></title><link>https://blog.youkuaiyun.com/Albert52856/article/details/109478165</link><guid>https://blog.youkuaiyun.com/Albert52856/article/details/109478165</guid><author>Albert52856</author><pubDate>Tue, 03 Nov 2020 20:15:12 +0800</pubDate><description><![CDATA[表达式i &lt; j &lt; k在C语言中是合法的，但是它不是你所期望的意思。因为＜运算符是左结合的， 所以这个表达式等价于(i &lt; j) &lt; k.
换句话说， 表达式首先检测l.是否小千j, 然后用比较后产生的结果1或0来和K进行比较。 表达式不测试j是否位于i和K之间,正确的表达式应该是i &lt; j &amp;&amp; j &lt; k.
#include&nbsp;&lt;stdio.h&gt;
#include&nbsp;&lt;stdlib.h&gt;

int&nbsp;m]]></description><category></category></item></channel></rss>