小编SWI*_*WII的帖子

访问lua中的全局变量

我有一个Lua代码如下:

a, b = 1, 10
if a<b then
    print(a)
    local a
    print(a)
end
print(a, b)
Run Code Online (Sandbox Code Playgroud)


只是一个小问题:

首先,我创建了一个全局变量a = 1;

然后在then块中我使用全局变量a来打印它;

然后我声明了一个未初始化的局部变量a(因此得到的值为nil)

然后我的问题来了:在then块中创建了局部变量a后,我怎样才能访问全局变量a,这是可能的?如果是这样,请给我一个答案:)

lua global-variables local-variables

3
推荐指数
1
解决办法
3299
查看次数

如何获取unsigned char的每一位的值?

在c中,我知道unsigned char的大小为1字节(= 1个八位字节= 8位),并且我知道unsigned char实际上是0到255之间的整数值,现在如果我有以下unsigned char变量:

unsigned char c = 255; //(this value can be any value from 0 to 255)
Run Code Online (Sandbox Code Playgroud)


如何获得包含 8 个元素的表,指示该变量的每个位值(0 或 1)?(像这样:{1, 1, 1, 1, 1, 1, 1, 1})有没有简单的方法可以在c中做到这一点?

c char bit

3
推荐指数
1
解决办法
7974
查看次数

括号和点语言顺序c

我想知道语言c,是a.b[i]一回事(a.b)[i]吗?

这里a是结构,b是他的成员(b是数组或指针).
我刚刚读了一篇关于c运算符优先级的文章,它告诉我[](括号)运算符在.(point)之前,这两个c运算符关联性是从左到右:

那么下面的表达式的顺序是什么(在c中)?

a.b.c[i].d[j]
Run Code Online (Sandbox Code Playgroud)

c expression operator-precedence

1
推荐指数
1
解决办法
54
查看次数

这个例子在Bjarne Stroustrup的c ++书中有什么问题

我在bjarne stroustrup的c ++编程语言第4版中尝试了这个例子:

#include <iostream>
#include <string>
#include <vector>
#include <list>

using namespace std;

template<typename T>
using Iterator<T> = typename T::iterator;

template<typename C, typename V>
vector<Iterator<C>> find_all(C& c, V v)
{
    vector<Iterator<C>> res;
    for (auto p = c.begin(); p!=c.end(); ++p)
        if (*p==v)
            res.push_back(p);
    return res;
}

void test()
{
    string m {"Mary had a little lamb"};
    for (auto p : find_all(m,'a'))
        if (*p!='a')
            cerr << "string bug!\n";
    // p is a str ing::iterator
    list<double> ld {1.1, 2.2, 3.3, 1.1};
    for …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

1
推荐指数
1
解决办法
327
查看次数

什么在linux终端输入密钥意味着什么?

我在下面有一个非常简单的C函数:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    int c;
    while ((c = getchar()) != EOF)
        putchar(c);
    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)


我在linux os终端上使用gcc来测试它.结果是:

d
d
e
e
f
f
5
5
56
56
Run Code Online (Sandbox Code Playgroud)


我只想知道:

1.为什么每次按下我的回车键,终端都会重复我输入的字符?

2.为什么我放两个字符(56),这也有效,它是如何工作的?

3.为什么只有Enter键使终端重复,而不是其他键?

4.在Linux终端或像这样的C程序中按Enter键是什么意思?

c linux terminal

0
推荐指数
1
解决办法
475
查看次数

为什么我的无限循环不起作用

我在类中有一个静态方法:

public static void MakeThreadModified(string s)
{
    new Thread(() => 
    {
        Thread.CurrentThread.IsBackground = true; 
        /* run your code here */
        while (true)
        {
            Console.WriteLine(s);
            Thread.Sleep(500);
        }

    }).Start();
}
Run Code Online (Sandbox Code Playgroud)

我在Main()中调用此方法,如下所示:

    string[] str = {"A", "B", "C", "D", "E"};
    foreach (var v in str)
    {
        MakeThreadModified(v);
    }
Run Code Online (Sandbox Code Playgroud)

我很惊讶地发现结果是:

A
E
C
B
D
Run Code Online (Sandbox Code Playgroud)

但为什么我有这个结果?我认为它会在控制台上连续不断地打印从'A'到'E'的字母,但它只打印每个字母一次.那为什么会这样呢?

c# multithreading loops

-1
推荐指数
1
解决办法
159
查看次数