Skip to content

char type is not compatible with all boards #287

@tomcombriat

Description

@tomcombriat

Trying to get the AudioDelayFeedbackX2 example to work correctly on the Pico (RP2040) I encountered a weird behavior: char type on the Pico (and maybe some other boards) is unsigned by default. Here is a small example that exemplifies that and all the potential side effects this could have:

char a = -1;

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.println(sizeof(a));
  Serial.println(a - 1);
  delay(1000);
}

Output:

1
254

Note that it does work with the expected behavior on the UNO or by defining signed char a=-1.


For mozzi, the expected type in most cases is int8_t, which is the same for everyone, hence I think it will be beneficial to have a critical look at every places where char is used and change it when necessary (probably everywhere as there are no example that I can think of which actually uses characters).
This goes along the line that I remember @tfry-git saying about defining more closely the types we are working with.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions