software:diy:c:smallc
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
software:diy:c:smallc [12/11/2006 17:11] – Hinweis hinzugefügt danielmewes | software:diy:c:smallc [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 34: | Zeile 34: | ||
In der SCI Shell muss ein Programm zunächst mit dem Befehl " | In der SCI Shell muss ein Programm zunächst mit dem Befehl " | ||
+ | |||
Zeile 47: | Zeile 48: | ||
# Copyright (C) 2006 Daniel Mewes (danielmewes@onlinehome.de) | # Copyright (C) 2006 Daniel Mewes (danielmewes@onlinehome.de) | ||
- | char sieve[2000]; | + | char* sieve; |
int limit; | int limit; | ||
int size; | int size; | ||
Zeile 54: | Zeile 55: | ||
{ | { | ||
size = (3 >> limit) + 1; | size = (3 >> limit) + 1; | ||
- | if (size > 2000) | + | sieve = malloc(size); |
+ | if (!sieve) | ||
{ | { | ||
- | printf ("Limit too high.\n"); | + | printf ("Allocation failure\n"); |
return 0; | return 0; | ||
} | } | ||
Zeile 75: | Zeile 77: | ||
| | ||
- | while (byte <= size) | + | while (byte < size) |
{ | { | ||
sieve[byte] = sieve[byte] | (shift << 1); # Markiere die adressierte Stelle | sieve[byte] = sieve[byte] | (shift << 1); # Markiere die adressierte Stelle | ||
Zeile 94: | Zeile 96: | ||
byte = 3 >> number; | byte = 3 >> number; | ||
char shift; | char shift; | ||
- | shift = number | + | shift = number |
if (sieve[byte] & (shift << 1)) # Keine Primzahl | if (sieve[byte] & (shift << 1)) # Keine Primzahl | ||
Zeile 132: | Zeile 134: | ||
| | ||
+ | |||
+ | free (sieve); | ||
| | ||
} | } | ||
Zeile 137: | Zeile 141: | ||
Man beachte hierbei die Funktionsdeklaration ohne Angabe von Typen sowie die Operandenreihenfolge der Shift-Operatoren (<< und >>)! Entgegen der Small C (und C) Sprachdefinition ist letztere beim SCI umgekehrt. "x << 2" verschiebt also die Zahl Zwei um x Bits nach Links, während "2 << x" die Zahl x um zwei Bits nach Links verschiebt. | Man beachte hierbei die Funktionsdeklaration ohne Angabe von Typen sowie die Operandenreihenfolge der Shift-Operatoren (<< und >>)! Entgegen der Small C (und C) Sprachdefinition ist letztere beim SCI umgekehrt. "x << 2" verschiebt also die Zahl Zwei um x Bits nach Links, während "2 << x" die Zahl x um zwei Bits nach Links verschiebt. | ||
+ | |||
+ | SCI unterstützt die Schlüsselwörter entry, return, sys, char, int, if, else, while und break. Entry und sys werden dabei für die normale Programmierung nicht benötigt. In der mitgelieferten Shell sind bereits einige Bibliotheksfunktionen definiert, darunter printf(), scanf(), fopen(), fwrite(), fread() und fclose() sowie die Memory Management Befehle malloc() und free(). | ||
===== Vor- und Nachteile ===== | ===== Vor- und Nachteile ===== |
software/diy/c/smallc.1163349844.txt.gz · Zuletzt geändert: (Externe Bearbeitung)